Advanced Lane Finding Project

The goals / steps of this project are the following:

  • Compute the camera calibration matrix and distortion coefficients given a set of chessboard images.
  • Apply a distortion correction to raw images.
  • Use color transforms, gradients, etc., to create a thresholded binary image.
  • Apply a perspective transform to rectify binary image ("birds-eye view").
  • Detect lane pixels and fit to find the lane boundary.
  • Determine the curvature of the lane and vehicle position with respect to center.
  • Warp the detected lane boundaries back onto the original image.
  • Output visual display of the lane boundaries and numerical estimation of lane curvature and vehicle position.

Camera Calibration

show how to calibration the camera

  1. get the chessboard used cv2.findChessboardCorners: def get_chessboard(glob_dir='camera_cal/calibration*.jpg'):
  2. show the chessboard used cv2.drawChessboardCorners: def show_chess(imgs):
  3. get the calibrate matrix used cv2.calibrateCamera :def calibrate_camera(objpoints, imgpoint, img):
  4. calibrate the camera used cv2.undistort : def calibrate_camera(objpoints, imgpoint, img):
In [2]:
import numpy as np
import cv2
import glob
import matplotlib.pyplot as plt
%matplotlib inline
In [3]:
def get_chessboard(glob_dir='camera_cal/calibration*.jpg'):
    """
    return objpoints, imgpoints, chess_imgs
    get the chessboard from the imgs in glob_dir
    """
    # prepare object points, like (0,0,0), (1,0,0), (2,0,0) ....,(6,5,0)
    objp = np.zeros((6*9,3), np.float32)
    objp[:,:2] = np.mgrid[0:9,0:6].T.reshape(-1,2)
    
    # Arrays to store object points and image points from all the images.
    objpoints = [] # 3d points in real world space
    imgpoints = [] # 2d points in image plane.
    chess_imgs = [] #array of images which has chessboard
    # Make a list of calibration images
    images = glob.glob(glob_dir)
    
    # Step through the list and search for chessboard corners
    for fname in images:
        img = cv2.imread(fname)
        gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
        # Find the chessboard corners
        ret, corners = cv2.findChessboardCorners(gray, (9,6),None)
        
        # If found, add object points, image points
        if ret == True:
            objpoints.append(objp)
            imgpoints.append(corners)
            
            # Draw and display the corners
            img = cv2.drawChessboardCorners(img, (9,6), corners, ret)
            chess_imgs.append(img)
        else:
            print("ret==false: ",fname)
    return objpoints, imgpoints, chess_imgs
In [4]:
def show_chess(imgs):
    """
    show the imgs.
    """
    length = len(imgs)
    row = int(length/3) + 1
    %matplotlib inline
    fig, axs = plt.subplots(row, 3, figsize=(35, 35))
    # fig.subplots_adjust(hspace = .2, wspace=.001)
    axis = axs.ravel()
    print("The chessboards: ")
    i = 0
    for img in imgs:        
        axis[i].axis('off')
        axis[i].imshow(img)
        i = i + 1
In [5]:
objpoints = [] # 3d points in real world space
imgpoints = [] # 2d points in image plane.
chess_imgs = [] #array of images which has chessboard
objpoints, imgpoints, chess_imgs = get_chessboard(glob_dir='camera_cal/calibration*.jpg')
show_chess(chess_imgs)
ret==false:  camera_cal/calibration4.jpg
ret==false:  camera_cal/calibration5.jpg
ret==false:  camera_cal/calibration1.jpg
The chessboards: 
In [6]:
def calibrate_camera(objpoints, imgpoint, img):
    """
    return the matrix and undistort imgs
    """
    # Test undistortion on an image
    img_size = img.shape[0:2]

    # Do camera calibration given object points and image points
    ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, img_size, None, None)
    
    undist = cv2.undistort(img, mtx, dist, None, mtx)
    
    return ret, mtx, dist, undist
    
In [7]:
test_img='./camera_cal/calibration1.jpg'
undist='./output_images/undist_calibration1.jpg'


img = cv2.imread(test_img)
ret, mtx, dist, dst = calibrate_camera(objpoints, imgpoints, img)

cv2.imwrite(undist, dst)

#dst = cv2.cvtColor(dst, cv2.COLOR_BGR2RGB)
# Visualize undistortion
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10))
ax1.imshow(img)
ax1.set_title('Original Image', fontsize=30)
ax2.imshow(dst)
ax2.set_title('Undistorted Image', fontsize=30)
Out[7]:
<matplotlib.text.Text at 0x7f59cc6cebe0>

Finally calibration : ret, mtx, dist, dst = calibrate_camera(objpoints, imgpoints, img)

undistort_image

In [8]:
def undistort(image, mtx = mtx, dist = dist):
#     img_size = image.shape[0:2]
#     ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, img_size, None, None)
    undist = cv2.undistort(image, mtx, dist, None, mtx)
    return undist
In [9]:
test_img='./test_images/straight_lines1.jpg'
undist='./output_images/undist_straight_lines1.jpg'


img = cv2.imread(test_img)
dst = undistort(img)
cv2.imwrite(undist, dst)
#dst = cv2.cvtColor(dst, cv2.COLOR_BGR2RGB)
# Visualize undistortion
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10))
ax1.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))
ax1.set_title('Original Image', fontsize=30)
ax2.imshow(cv2.cvtColor(dst,cv2.COLOR_BGR2RGB))
ax2.set_title('Undistorted Image', fontsize=30)
Out[9]:
<matplotlib.text.Text at 0x7f59cc60c898>

color transforms

Teachers' suggestions

In [10]:
def select_yellow(image):
    hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    lower = np.array([20,60,60])
    upper = np.array([38,174, 250])
    mask = cv2.inRange(hsv, lower, upper)
    
    return mask

def select_white(image):
    lower = np.array([202,202,202])
    upper = np.array([255,255,255])
    mask = cv2.inRange(image, lower, upper)
    
    return mask

def comb_thresh(image):
    yellow = select_yellow(image)
    white = select_white(image)
    
    combined_binary = np.zeros_like(yellow)
    combined_binary[(yellow >= 1) | (white >= 1)] = 1
    
    return combined_binary

My own ways

In [11]:
def color_threshold(img, s_thresh=(90, 255), r_thresh = (140, 255), u_thresh = (140, 200)):
    """
    input image is in BGR img.(read by cv2)
    In HSV RGB YUV space
    return the combine of S R U space.
    """
    
    hls = cv2.cvtColor(img, cv2.COLOR_BGR2HLS)
    H = hls[:,:,0]
    L = hls[:,:,1]
    S = hls[:,:,2]
    s_binary = np.zeros_like(S)
    s_binary[(S > s_thresh[0]) & (S <= s_thresh[1])] = 1
    
    # RGB colour
    B = img[:,:,0]
    G = img[:,:,1]
    R = img[:,:,2]
    r_binary = np.zeros_like(R)
    r_binary[(R > r_thresh[0]) & (R <= r_thresh[1])] = 1
    
    # YUV colour
    yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
    Y = yuv[:,:,0]
    U = yuv[:,:,1]
    V = yuv[:,:,2]
    u_binary = np.zeros_like(U)
    u_binary[(U > u_thresh[0]) & (U <= u_thresh[1])] = 1
    
    #combine the color transform
    combined = np.zeros_like(u_binary)
    combined[ (r_binary == 1)&(s_binary == 1)] = 1
    return combined

show the color threshold

In [12]:
filenames = 'test_images/test*.jpg'
names = glob.glob(filenames)
color_thres = []
images = []
for filenames in names:
    origin = cv2.imread(filenames) #get img
    print(origin.shape)
    undis = undistort(origin)  #undistort
    images.append(undis)
    color_thre = comb_thresh(undis)
    color_thres.append(color_thre)
#show the color threshold
j = 0
for binary in color_thres:
    
    f, (axis1, axis2) = plt.subplots(1, 2, figsize=(15,10))
    axis1.imshow(cv2.cvtColor(images[j], cv2.COLOR_BGR2RGB))
    axis1.set_title("undis img", fontsize = 15)
    axis2.imshow(binary, cmap='gray')
    axis2.set_title("only color threshold", fontsize = 15)
    j = j+1 
(720, 1280, 3)
(720, 1280, 3)
(720, 1280, 3)
(720, 1280, 3)
(720, 1280, 3)
(720, 1280, 3)

gradient Threshold

  • Sobel
  • Magnitude of gradient
  • Direction of gradient
  • combining the threshold
In [13]:
def abs_sobel_thresh(img, orient='x', sobel_kernel=3, thresh=(20, 100)):
    # Convert to grayscale
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # Apply x or y gradient with the OpenCV Sobel() function
    # and take the absolute value
    if orient == 'x':
        abs_sobel = np.absolute(cv2.Sobel(gray, cv2.CV_64F, 1, 0))
    if orient == 'y':
        abs_sobel = np.absolute(cv2.Sobel(gray, cv2.CV_64F, 0, 1))
    # Rescale back to 8 bit integer
    scaled_sobel = np.uint8(255*abs_sobel/np.max(abs_sobel))
    # Create a copy and apply the threshold
    grad_binary = np.zeros_like(scaled_sobel)
    # Here I'm using inclusive (>=, <=) thresholds, but exclusive is ok too
    grad_binary[(scaled_sobel >= thresh[0]) & (scaled_sobel <= thresh[1])] = 1
    return grad_binary

def mag_thresh(image, sobel_kernel=3, mag_thresh=(30, 100)):
    """
     Calculate gradient magnitude
    """
    # Convert to grayscale
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # Take both Sobel x and y gradients
    sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel)
    sobely = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel)
    # Calculate the gradient magnitude
    gradmag = np.sqrt(sobelx**2 + sobely**2)
    # Rescale to 8 bit
    scale_factor = np.max(gradmag)/255 
    gradmag = (gradmag/scale_factor).astype(np.uint8) 
    # Create a binary image of ones where threshold is met, zeros otherwise
    mag_binary = np.zeros_like(gradmag)
    mag_binary[(gradmag >= mag_thresh[0]) & (gradmag <= mag_thresh[1])] = 1
    return mag_binary

def dir_threshold(image, sobel_kernel=3, thresh=(0.7, 1.3)):
    """
    Calculate gradient direction
    """ 
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # Calculate the x and y gradients
    sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel)
    sobely = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel)
    # Take the absolute value of the gradient direction, 
    # apply a threshold, and create a binary image result
    absgraddir = np.arctan2(np.absolute(sobely), np.absolute(sobelx))
    dir_binary =  np.zeros_like(absgraddir)
    dir_binary[(absgraddir >= thresh[0]) & (absgraddir <= thresh[1])] = 1
    return dir_binary
  
In [14]:
def combine_threshold(image):
    """Input the image in BGR"""
    ksize = 3;
    # Apply each of the thresholding functions
    gradx = abs_sobel_thresh(image, orient='x', sobel_kernel=ksize)
    grady = abs_sobel_thresh(image, orient='y', sobel_kernel=ksize)
    mag_binary = mag_thresh(image, sobel_kernel=ksize)
    dir_binary = dir_threshold(image, sobel_kernel=ksize)
    
    combined = np.zeros_like(dir_binary)
    combined[(gradx == 1)] = 1
#     combined[((gradx == 1) & (grady == 1)) | ((mag_binary == 1) & (dir_binary == 1))] = 1

    return combined  

test gradient threshold

In [15]:
filenames = 'test_images/test*.jpg'
names = glob.glob(filenames)
combines_thred = []
images = []
for filenames in names:
    origin = cv2.imread(filenames) #get img
    undis = undistort(origin)  #undistort
    images.append(undis)
    color_thre = color_threshold(undis)
    graident_thre = combine_threshold(undis)
    combined = np.zeros_like(color_thre)
    combined[((color_thre == 1) | (graident_thre == 1))] = 1 
    combines_thred.append(combined)
#show the color threshold
j = 0
for binary in combines_thred:
    f, (axis1, axis2) = plt.subplots(1, 2, figsize=(15,10))
    axis1.imshow(cv2.cvtColor(images[j], cv2.COLOR_BGR2RGB))
    axis1.set_title("undis img", fontsize = 15)
    axis2.imshow(binary, cmap='gray')
    axis2.set_title("combine color and gradient threshold", fontsize = 15)
    j = j+1 

perspective transform

perspective transform to rectify binary image ("birds-eye view").

In [16]:
def perspective_birds(img):
    image_size = (img.shape[1], img.shape[0])
    offset = 0
    src = np.float32([[545, 460],
                    [735, 460],
                    [1280, 700],
                    [0, 700]])

    dst = np.float32([[0, 0],
                     [1280, 0],
                     [1280, 720],
                     [0, 720]])
    M = cv2.getPerspectiveTransform(src, dst)
    warped = cv2.warpPerspective(img, M, image_size)
    return warped, M
In [17]:
filenames = 'test_images/test*.jpg'
names = glob.glob(filenames)
origins = []
brids_show = []
for filenames in names:
    origin = cv2.imread(filenames) #get img
    origins.append(origin)
    undis = undistort(origin)  #undistort
    wraped, M = perspective_birds(undis)
    brids_show.append(wraped)
j = 0
for origin in origins:
    f, (axis1, axis2) = plt.subplots(1, 2, figsize=(15,10))
    axis1.imshow(cv2.cvtColor(origin, cv2.COLOR_BGR2RGB))
    axis1.set_title("undis img", fontsize = 15)
    axis2.imshow(cv2.cvtColor(brids_show[j], cv2.COLOR_BGR2RGB))
    axis2.set_title("undistorted brid's view", fontsize = 15)
    j = j+1     

    
In [18]:
filenames = 'test_images/test*.jpg'
names = glob.glob(filenames)
binary_combined = []
pers_images = []
for filenames in names:
    origin = cv2.imread(filenames) #get img
    undis = undistort(origin)  #undistort
    origin_wraped, origin_M = perspective_birds(undis)
    pers_images.append(origin_wraped)
    color_thre = comb_thresh(undis)
    graident_thre = combine_threshold(undis)
    combined = np.zeros_like(color_thre)
    combined[((color_thre == 1))] = 1 
    wrapedd,M2 = perspective_birds(combined)
    binary_combined.append(wrapedd)
#show the color threshold
j = 0
for binary in binary_combined:
    f, (axis1, axis2) = plt.subplots(1, 2, figsize=(15,10))
    axis1.imshow(cv2.cvtColor(pers_images[j], cv2.COLOR_BGR2RGB))
    axis1.set_title("undis img", fontsize = 15)
    axis2.imshow(binary, cmap='gray')
    axis2.set_title("combine color & gradient threshold & brid's view", fontsize = 15)
    j = j+1 

Detect lane pixels and fit to find the lane boundary.

implent sliding windows and FIt a polynomial

In [19]:
def find_line(binary_warped, draw_windows = False):
    histogram = np.sum(binary[binary_warped.shape[0]//2:,:], axis=0)
    out_img = np.dstack((binary_warped, binary_warped, binary_warped))*255
    midpoint = np.int(histogram.shape[0]/2)
    leftx_base = np.argmax(histogram[:midpoint])
    rightx_base = np.argmax(histogram[midpoint:]) + midpoint
    # Choose the number of sliding windows
    nwindows = 9
    # Set height of windows
    window_height = np.int(binary_warped.shape[0]/nwindows)
    # Identify the x and y positions of all nonzero pixels in the image
    nonzero = binary_warped.nonzero()
    nonzeroy = np.array(nonzero[0])
    nonzerox = np.array(nonzero[1])
    # Current positions to be updated for each window
    leftx_current = leftx_base
    rightx_current = rightx_base
    # Set the width of the windows +/- margin
    margin = 100
    # Set minimum number of pixels found to recenter window
    minpix = 50
    # Create empty lists to receive left and right lane pixel indices
    left_lane_inds = []
    right_lane_inds = []
    
    # Step through the windows one by one
    for window in range(nwindows):
        # Identify window boundaries in x and y (and right and left)
        win_y_low = binary_warped.shape[0] - (window+1)*window_height
        win_y_high = binary_warped.shape[0] - window*window_height
        win_xleft_low = leftx_current - margin
        win_xleft_high = leftx_current + margin
        win_xright_low = rightx_current - margin
        win_xright_high = rightx_current + margin
        if draw_windows:
            # Draw the windows on the visualization image
            cv2.rectangle(out_img,(win_xleft_low,win_y_low),(win_xleft_high,win_y_high),
                          (0,255,0), 2) 
            cv2.rectangle(out_img,(win_xright_low,win_y_low),(win_xright_high,win_y_high),
                          (0,255,0), 2) 
        # Identify the nonzero pixels in x and y within the window
        good_left_inds = ((nonzeroy >= win_y_low) & (nonzeroy < win_y_high) & 
                          (nonzerox >= win_xleft_low) &  (nonzerox < win_xleft_high)).nonzero()[0]
        good_right_inds = ((nonzeroy >= win_y_low) & (nonzeroy < win_y_high) & 
                           (nonzerox >= win_xright_low) &  (nonzerox < win_xright_high)).nonzero()[0]
        # Append these indices to the lists
        left_lane_inds.append(good_left_inds)
        right_lane_inds.append(good_right_inds)
        # If you found > minpix pixels, recenter next window on their mean position
        if len(good_left_inds) > minpix:
            leftx_current = np.int(np.mean(nonzerox[good_left_inds]))
        if len(good_right_inds) > minpix:
            rightx_current = np.int(np.mean(nonzerox[good_right_inds]))

    # Concatenate the arrays of indices
    left_lane_inds = np.concatenate(left_lane_inds)
    right_lane_inds = np.concatenate(right_lane_inds)
    
    # Extract left and right line pixel positions
    leftx = nonzerox[left_lane_inds]
    lefty = nonzeroy[left_lane_inds] 
    rightx = nonzerox[right_lane_inds]
    righty = nonzeroy[right_lane_inds] 
    
    origin_left_line = (lefty, leftx)
    origin_right_line = (righty, rightx)

    # Fit a second order polynomial to each
    left_fit = np.polyfit(lefty, leftx, 2)
    right_fit = np.polyfit(righty, rightx, 2) 
    return left_fit, right_fit, out_img, origin_left_line ,origin_right_line
In [20]:
def draw_polygon(out_img,left_fitx, right_fitx, ploty, margin=100):
    window_img = np.zeros_like(out_img)#create the img
    #get the pts
    left_line_window1 = np.array([np.transpose(np.vstack([left_fitx-margin, ploty]))])
    left_line_window2 = np.array([np.flipud(np.transpose(np.vstack([left_fitx+margin, 
                                                                    ploty])))])
    left_line_pts = np.hstack((left_line_window1, left_line_window2))
    right_line_window1 = np.array([np.transpose(np.vstack([right_fitx-margin, ploty]))])
    right_line_window2 = np.array([np.flipud(np.transpose(np.vstack([right_fitx+margin, 
                                                                     ploty])))])
    right_line_pts = np.hstack((right_line_window1, right_line_window2))
    cv2.fillPoly(window_img, np.int_([left_line_pts]), (0,255, 0))
    cv2.fillPoly(window_img, np.int_([right_line_pts]), (0,255, 0))
    return window_img

Visualization of lane boundary.

In [21]:
i = 0
final_lane_boundary = []
for binary_warped in binary_combined:
    origin_wraped = brids_show[i]
    i = i + 1
    
    left_fit, right_fit, out_img, origin_left_line ,origin_right_line = find_line(binary_warped)
    
    ploty = np.linspace(0, binary_warped.shape[0]-1, binary_warped.shape[0] )#binary_warped.shape[0] pts
    left_fitx = left_fit[0]*ploty**2 + left_fit[1]*ploty + left_fit[2] #pts on the left
    right_fitx = right_fit[0]*ploty**2 + right_fit[1]*ploty + right_fit[2] #pts on the right

    window_img = draw_polygon(out_img, left_fitx, right_fitx, ploty)
    
    out_img[origin_left_line[0], origin_left_line[1]] = [255, 0, 0]
    out_img[origin_right_line[0], origin_right_line[1]] = [0, 0, 255]
    
    
    final_show = cv2.addWeighted(out_img, 1, window_img, 0.3, 0)
    final_lane_boundary.append(final_show)
    f, (axis1, axis2) = plt.subplots(1, 2, figsize=(15,10))
    axis1.imshow(cv2.cvtColor(origin_wraped, cv2.COLOR_BGR2RGB))
    axis1.set_title("undistorted brid's view", fontsize = 15)
    axis2.imshow(final_show)
    axis2.set_title("lane line", fontsize = 15)
    axis2.plot(left_fitx, ploty, color='yellow')
    axis2.plot(right_fitx, ploty, color='yellow')

Determine the curvature of the lane and vehicle position with respect to center.

In [43]:
def get_curve_position(left_fit, right_fit, ploty):
    
    y_eval = np.max(ploty)
    left_curverad = ((1 + (2*left_fit[0]*y_eval + left_fit[1])**2)**1.5) / np.absolute(2*left_fit[0])

    right_curverad = ((1 + (2*right_fit[0]*y_eval + right_fit[1])**2)**1.5) / np.absolute(2*right_fit[0])    
    curver = (left_curverad + right_curverad)/2
    #get vehicle position
    right_x = right_fit[0]*720**2 + right_fit[1]*720 + right_fit[2]
    left_x = left_fit[0]*720**2 + left_fit[1]*720 + left_fit[2]     
    position = abs((right_x + left_x))/2 #center of lane line.
#     print(right_curverad,left_curverad )
    dis2center = 640 - position #640 is the vehivle position # 1280/2=640, if dis2center>0: on the left of center
    road_width_pixel =  abs(right_x - left_x)
    print("road_width_pixel: ", road_width_pixel)
    dis2center = dis2center/road_width_pixel * 3.7
    return curver, dis2center
def get_curve2_positon(left_fit, right_fit, ploty):
    #get vehicle position
    right_x = right_fit[0]*720**2 + right_fit[1]*720 + right_fit[2]
    left_x = left_fit[0]*720**2 + left_fit[1]*720 + left_fit[2]     
    center = abs((right_x + left_x))/2
    dis2center = 640 - center # 1280/2=640, if dis2center>0: on the right of center
    road_width_pixel =  abs(right_x - left_x)
    print("road_width_pixel: ", road_width_pixel)
    dis2center = dis2center/road_width_pixel * 3.7
    
    y_eval = np.max(ploty)
    quadratic_coeff = 3e-4 # arbitrary quadratic coefficient
    # For each y position generate random x position within +/-50 pix
    # of the line base position in each case (x=200 for left, and x=900 for right)
    left_y0 = left_fit[0]*720**2 + left_fit[1]*720 + left_fit[2]
    right_yo = right_fit[0]*720**2 + right_fit[1]*720 + right_fit[2]
    leftx = np.array([left_y0 + (y**2)*quadratic_coeff + np.random.randint(-50, high=51) 
                              for y in ploty])
    rightx = np.array([right_yo + (y**2)*quadratic_coeff + np.random.randint(-50, high=51) 
                                for y in ploty])
    leftx = leftx[::-1]  # Reverse to match top-to-bottom in y
    rightx = rightx[::-1]  # Reverse to match top-to-bottom in y
    # Fit a second order polynomial to pixel positions in each fake lane line
    left_fit = np.polyfit(ploty, leftx, 2)
    left_fitx = left_fit[0]*ploty**2 + left_fit[1]*ploty + left_fit[2]
    right_fit = np.polyfit(ploty, rightx, 2)
    right_fitx = right_fit[0]*ploty**2 + right_fit[1]*ploty + right_fit[2]
    ym_per_pix = 30/720 # meters per pixel in y dimension
    xm_per_pix = 3.7/road_width_pixel # meters per pixel in x dimension

    # Fit new polynomials to x,y in world space
    left_fit_cr = np.polyfit(ploty*ym_per_pix, leftx*xm_per_pix, 2)
    right_fit_cr = np.polyfit(ploty*ym_per_pix, rightx*xm_per_pix, 2)
    # Calculate the new radii of curvature
    left_curverad = ((1 + (2*left_fit_cr[0]*y_eval*ym_per_pix + left_fit_cr[1])**2)**1.5) / np.absolute(2*left_fit_cr[0])
    right_curverad = ((1 + (2*right_fit_cr[0]*y_eval*ym_per_pix + right_fit_cr[1])**2)**1.5) / np.absolute(2*right_fit_cr[0])
    # Now our radius of curvature is in meters
    curver = (left_curverad + right_curverad)/2
    return curver, dis2center

Warp the detected lane boundaries back onto the original image.

In [44]:
def perspective_inv(img):
    image_size = (img.shape[1], img.shape[0])
    offset = 0
    src = np.float32([[545, 460],
                    [735, 460],
                    [1280, 700],
                    [0, 700]])

    dst = np.float32([[0, 0],
                     [1280, 0],
                     [1280, 720],
                     [0, 720]])
    M = cv2.getPerspectiveTransform(dst, src)
    warped = cv2.warpPerspective(img, M, image_size)
    return warped
In [45]:
i = 0
final_lane_boundary = []
for binary_warped in binary_combined:
    origin = origins[i]
    origin = undistort(origin)
    i = i + 1
    left_fit, right_fit, out_img, origin_left_line ,origin_right_line = find_line(binary_warped)
    
    ploty = np.linspace(0, binary_warped.shape[0]-1, binary_warped.shape[0] )#binary_warped.shape[0] pts
    left_fitx = left_fit[0]*ploty**2 + left_fit[1]*ploty + left_fit[2] #pts on the left
    right_fitx = right_fit[0]*ploty**2 + right_fit[1]*ploty + right_fit[2] #pts on the right

    curver, dis2center = get_curve2_positon(left_fit, right_fit, ploty)
    
    warp = np.zeros_like(out_img).astype(np.uint8)
    pts_left = np.array([np.flipud(np.transpose(np.vstack([left_fitx, ploty])))])
    pts_right = np.array([np.transpose(np.vstack([right_fitx, ploty]))])
    pts = np.hstack((pts_left, pts_right))
    cv2.polylines(warp, np.int_([pts]), isClosed=False, color=(0, 0, 255), thickness = 40)
    cv2.fillPoly(warp, np.int_([pts]), (0, 255, 0))
    unwraped = perspective_inv(warp) 

    final_show = cv2.addWeighted(origin, 1, unwraped, 0.3, 0)
    f, axis1 = plt.subplots(1, 1, figsize=(15,10))
    axis1.imshow(cv2.cvtColor(final_show, cv2.COLOR_BGR2RGB))
    axis1.set_title(" lane on original image.", fontsize = 15)
    if dis2center > 0:
        axis1.text(100, 20, 'Vehicle (right to center line): {:.2f}m'.format(abs(dis2center)),
               color='red', fontsize=15)
    else:
        axis1.text(100, 20, 'Vehicle (left to center line): {:.2f}m'.format(abs(dis2center)),
               color='red', fontsize=15)

    axis1.text(100, 100, 'Curvature of line: {:.2f}m'.format(curver),
               color='red', fontsize=15)
road_width_pixel:  866.896272442
road_width_pixel:  891.898309979
road_width_pixel:  858.881604705
road_width_pixel:  874.737497706
road_width_pixel:  846.557025975
road_width_pixel:  849.347574247

Output visual display of the lane boundaries and numerical estimation of lane curvature and vehicle position.

In [46]:
# Import everything needed to edit/save/watch video clips
from moviepy.editor import VideoFileClip
from IPython.display import HTML
In [47]:
Left_fit = []
Right_fit = []
is_first = True
global Left_fit, Right_fit, is_first
def find_line_video(binary_warped):
    nonzero = binary_warped.nonzero()
    nonzeroy = np.array(nonzero[0])
    nonzerox = np.array(nonzero[1])
    margin = 100
    global Left_fit, Right_fit
    left_lane_inds = ((nonzerox > (Left_fit[0]*(nonzeroy**2) + Left_fit[1]*nonzeroy + 
                                   Left_fit[2] - margin)) & (nonzerox < (Left_fit[0]*(nonzeroy**2) + 
                                   Left_fit[1]*nonzeroy + Left_fit[2] + margin))) 
    right_lane_inds = ((nonzerox > (Right_fit[0]*(nonzeroy**2) + Right_fit[1]*nonzeroy + 
                                    Right_fit[2] - margin)) & (nonzerox < (Right_fit[0]*(nonzeroy**2)+
                                    Right_fit[1]*nonzeroy + Right_fit[2] + margin)))  

    # Again, extract left and right line pixel positions
    leftx = nonzerox[left_lane_inds]
    lefty = nonzeroy[left_lane_inds] 
    rightx = nonzerox[right_lane_inds]
    righty = nonzeroy[right_lane_inds]
    # Fit a second order polynomial to each
    left_fit = np.polyfit(lefty, leftx, 2)
    right_fit = np.polyfit(righty, rightx, 2)
    # Generate x and y values for plotting
    ploty = np.linspace(0, binary_warped.shape[0]-1, binary_warped.shape[0] )
    left_fitx = left_fit[0]*ploty**2 + left_fit[1]*ploty + left_fit[2]
    right_fitx = right_fit[0]*ploty**2 + right_fit[1]*ploty + right_fit[2]
    return left_fit, right_fit
In [52]:
def process_image(img):
    """
    input: img in RGB;
    return the img with lane boundaries and numerical estimation of lane curvature and vehicle position.
    """
    #undistort  the img
    undis = undistort(img)
    
    #Thresholding    
    color_thre = color_threshold(undis)
    graident_thre = combine_threshold(undis)
    combined = np.zeros_like(color_thre)
    combined[((color_thre == 1) | (graident_thre == 1))] = 1 
    #Perspective Transform
    binary_warped, M = perspective_birds(combined)
#     plt.imshow(binary_warped, cmap = 'gray')
    #Find the lane line
    global Left_fit, Right_fit, is_first
    if is_first:
        Left_fit, Right_fit, out_img, origin_left_line ,origin_right_line = find_line(binary_warped)
        is_first = False
    else:
        Left_fit, Right_fit = find_line_video(binary_warped)
#     print(Right_fit)
    
    #wrap the lane boundaries into original img
    ploty = np.linspace(0, binary_warped.shape[0]-1, binary_warped.shape[0] )#binary_warped.shape[0] pts
    #caculate the curvature of lane line and the vehicle position
    curver, dis2center = get_curve2_positon(Left_fit, Right_fit, ploty)

    left_fitx = Left_fit[0]*ploty**2 + Left_fit[1]*ploty + Left_fit[2] #pts on the left
    right_fitx = Right_fit[0]*ploty**2 + Right_fit[1]*ploty + Right_fit[2] #pts on the right
    warp = np.zeros_like(img).astype(np.uint8)
    pts_left = np.array([np.flipud(np.transpose(np.vstack([left_fitx, ploty])))])
    pts_right = np.array([np.transpose(np.vstack([right_fitx, ploty]))])
    pts = np.hstack((pts_left, pts_right))
    cv2.polylines(warp, np.int_([pts]), isClosed=False, color=(0, 0, 255), thickness = 40)
    cv2.fillPoly(warp, np.int_([pts]), (0, 255, 0))
    unwraped = perspective_inv(warp) 
    
    final_show = cv2.addWeighted(undis, 1, unwraped, 0.3, 0)
    if dis2center > 0:
        cv2.putText(final_show, 'Vehicle right to center line: {:.2f}m'.format(abs(dis2center)),
                (100,80),fontFace = 16, fontScale = 1, color=(255,255,255), thickness = 2)
    else:
        cv2.putText(final_show, 'Vehicle left to center line: {:.2f}m'.format(abs(dis2center)),
                (100,80),fontFace = 16, fontScale = 1, color=(255,255,255), thickness = 2)
    cv2.putText(final_show, 'Curvature of line: {:.2f}m'.format(curver),
                (100,140),fontFace = 16, fontScale = 1, color=(255,255,255), thickness = 2)
    return final_show
In [54]:
white_output = 'project_video-out.mp4'
clip1 = VideoFileClip("project_video.mp4")
white_clip = clip1.fl_image(lambda x: process_image(x))
%time white_clip.write_videofile(white_output, audio=False)
road_width_pixel:  862.880295879
[MoviePy] >>>> Building video project_videoline.mp4
[MoviePy] Writing video project_videoline.mp4
  0%|          | 0/1261 [00:00<?, ?it/s]
road_width_pixel:  857.956422075
  0%|          | 3/1261 [00:00<04:00,  5.23it/s]
road_width_pixel:  859.75022974
road_width_pixel:  851.994131069
  0%|          | 5/1261 [00:00<03:54,  5.37it/s]
road_width_pixel:  852.16505563
road_width_pixel:  848.278823973
  0%|          | 6/1261 [00:01<03:50,  5.44it/s]
road_width_pixel:  848.345793829
road_width_pixel:  848.532456204
  1%|          | 8/1261 [00:01<03:49,  5.46it/s]
road_width_pixel:  878.196166248
road_width_pixel:  884.799963298
  1%|          | 10/1261 [00:01<03:52,  5.37it/s]
road_width_pixel:  871.71185209
road_width_pixel:  852.552177995
  1%|          | 13/1261 [00:02<03:50,  5.42it/s]
road_width_pixel:  855.009115969
road_width_pixel:  848.819322564
  1%|          | 15/1261 [00:02<03:44,  5.54it/s]
road_width_pixel:  851.096052296
road_width_pixel:  831.723352177
  1%|▏         | 16/1261 [00:02<03:48,  5.45it/s]
road_width_pixel:  820.197044978
road_width_pixel:  827.252068917
  2%|▏         | 19/1261 [00:03<03:47,  5.47it/s]
road_width_pixel:  826.342430273
road_width_pixel:  830.445601279
  2%|▏         | 20/1261 [00:03<03:49,  5.40it/s]
road_width_pixel:  832.927631761
road_width_pixel:  842.391250607
  2%|▏         | 23/1261 [00:04<03:49,  5.40it/s]
road_width_pixel:  859.567485592
road_width_pixel:  859.341890119
  2%|▏         | 25/1261 [00:04<03:44,  5.50it/s]
road_width_pixel:  845.200180968
road_width_pixel:  847.650595842
  2%|▏         | 26/1261 [00:04<03:46,  5.46it/s]
road_width_pixel:  852.843197182
road_width_pixel:  862.351005363
  2%|▏         | 28/1261 [00:05<03:48,  5.40it/s]
road_width_pixel:  870.924052869
road_width_pixel:  862.660294492
  2%|▏         | 30/1261 [00:05<04:17,  4.79it/s]
road_width_pixel:  854.066954136
  3%|▎         | 32/1261 [00:06<04:21,  4.70it/s]
road_width_pixel:  857.818600897
road_width_pixel:  859.447166219
  3%|▎         | 34/1261 [00:06<04:16,  4.78it/s]
road_width_pixel:  868.01673609
road_width_pixel:  888.114514006
  3%|▎         | 36/1261 [00:06<03:51,  5.29it/s]
road_width_pixel:  880.539918477
road_width_pixel:  853.388561573
  3%|▎         | 38/1261 [00:07<03:43,  5.47it/s]
road_width_pixel:  856.627134474
road_width_pixel:  864.77958611
  3%|▎         | 40/1261 [00:07<03:40,  5.54it/s]
road_width_pixel:  841.033115632
road_width_pixel:  842.765243033
  3%|▎         | 42/1261 [00:07<03:29,  5.81it/s]
road_width_pixel:  845.610505402
road_width_pixel:  846.234631224
  3%|▎         | 43/1261 [00:08<03:55,  5.17it/s]
road_width_pixel:  845.0708255
road_width_pixel:  845.345509396
  4%|▎         | 45/1261 [00:08<03:57,  5.11it/s]
road_width_pixel:  846.98390815
road_width_pixel:  859.554481206
  4%|▎         | 47/1261 [00:08<03:45,  5.38it/s]
road_width_pixel:  865.617421204
road_width_pixel:  862.117130278
  4%|▍         | 50/1261 [00:09<03:42,  5.45it/s]
road_width_pixel:  850.904090302
road_width_pixel:  841.888487979
  4%|▍         | 51/1261 [00:09<03:36,  5.59it/s]
road_width_pixel:  848.488249139
road_width_pixel:  843.114505949
  4%|▍         | 54/1261 [00:10<03:46,  5.34it/s]
road_width_pixel:  828.681976577
road_width_pixel:  829.147993261
  4%|▍         | 56/1261 [00:10<03:42,  5.41it/s]
road_width_pixel:  833.345504346
road_width_pixel:  836.599306126
  5%|▍         | 58/1261 [00:10<03:43,  5.37it/s]
road_width_pixel:  841.169884686
road_width_pixel:  849.176828847
  5%|▍         | 59/1261 [00:11<03:42,  5.41it/s]
road_width_pixel:  864.438434687
road_width_pixel:  847.63160086
  5%|▍         | 62/1261 [00:11<03:36,  5.54it/s]
road_width_pixel:  856.065836962
road_width_pixel:  844.204600601
  5%|▍         | 63/1261 [00:11<03:41,  5.41it/s]
road_width_pixel:  849.497274419
  5%|▌         | 64/1261 [00:12<03:48,  5.23it/s]
road_width_pixel:  841.344197056
road_width_pixel:  842.999575205
  5%|▌         | 66/1261 [00:12<03:45,  5.31it/s]
road_width_pixel:  847.513248933
road_width_pixel:  848.024460489
  5%|▌         | 68/1261 [00:12<03:47,  5.24it/s]
road_width_pixel:  843.117511642
road_width_pixel:  841.938162154
  6%|▌         | 71/1261 [00:13<03:33,  5.57it/s]
road_width_pixel:  843.079037182
road_width_pixel:  839.235983665
  6%|▌         | 72/1261 [00:13<03:38,  5.45it/s]
road_width_pixel:  828.343448953
road_width_pixel:  826.642838741
  6%|▌         | 74/1261 [00:13<03:40,  5.38it/s]
road_width_pixel:  829.937663792
road_width_pixel:  834.065946698
  6%|▌         | 76/1261 [00:14<03:55,  5.04it/s]
road_width_pixel:  823.55015001
road_width_pixel:  832.128797264
  6%|▋         | 79/1261 [00:14<03:43,  5.28it/s]
road_width_pixel:  831.369646947
road_width_pixel:  831.718444643
  6%|▋         | 81/1261 [00:15<03:41,  5.33it/s]
road_width_pixel:  833.103542075
road_width_pixel:  837.527706832
  7%|▋         | 83/1261 [00:15<03:38,  5.40it/s]
road_width_pixel:  841.433093409
road_width_pixel:  852.507576189
  7%|▋         | 84/1261 [00:15<03:44,  5.23it/s]
road_width_pixel:  875.308618875
road_width_pixel:  885.766367693
  7%|▋         | 86/1261 [00:16<03:46,  5.18it/s]
road_width_pixel:  884.855340937
road_width_pixel:  867.114162515
  7%|▋         | 88/1261 [00:16<03:52,  5.05it/s]
road_width_pixel:  877.931453243
road_width_pixel:  866.609868056
  7%|▋         | 90/1261 [00:17<03:47,  5.15it/s]
road_width_pixel:  851.89521175
road_width_pixel:  858.956575075
  7%|▋         | 92/1261 [00:17<03:50,  5.07it/s]
road_width_pixel:  859.080743049
  7%|▋         | 93/1261 [00:17<04:02,  4.81it/s]
road_width_pixel:  851.139149292
road_width_pixel:  848.93514118
  8%|▊         | 95/1261 [00:18<03:50,  5.07it/s]
road_width_pixel:  847.495427201
  8%|▊         | 96/1261 [00:18<04:04,  4.77it/s]
road_width_pixel:  854.212766578
  8%|▊         | 97/1261 [00:18<04:08,  4.68it/s]
road_width_pixel:  855.979692633
road_width_pixel:  843.298538765
  8%|▊         | 99/1261 [00:18<04:06,  4.71it/s]
road_width_pixel:  836.066784252
  8%|▊         | 100/1261 [00:19<04:04,  4.74it/s]
road_width_pixel:  838.260245491
road_width_pixel:  837.2016364
  8%|▊         | 102/1261 [00:19<03:50,  5.03it/s]
road_width_pixel:  828.876182843
road_width_pixel:  830.116144514
  8%|▊         | 104/1261 [00:19<03:56,  4.88it/s]
road_width_pixel:  833.839576911
road_width_pixel:  838.211995962
  8%|▊         | 106/1261 [00:20<03:50,  5.01it/s]
road_width_pixel:  837.777954068
road_width_pixel:  842.200269766
  9%|▊         | 108/1261 [00:20<03:48,  5.04it/s]
road_width_pixel:  843.09155367
  9%|▊         | 109/1261 [00:20<03:52,  4.96it/s]
road_width_pixel:  861.940192978
  9%|▉         | 111/1261 [00:21<03:45,  5.09it/s]
road_width_pixel:  871.110322149
road_width_pixel:  855.542635954
  9%|▉         | 112/1261 [00:21<03:55,  4.89it/s]
road_width_pixel:  850.582423076
road_width_pixel:  843.714787824
  9%|▉         | 115/1261 [00:22<03:37,  5.27it/s]
road_width_pixel:  846.546170967
road_width_pixel:  839.35418665
  9%|▉         | 116/1261 [00:22<03:45,  5.08it/s]
road_width_pixel:  837.10785162
road_width_pixel:  841.014527646
  9%|▉         | 118/1261 [00:22<03:43,  5.12it/s]
road_width_pixel:  838.703124255
road_width_pixel:  840.233468961
 10%|▉         | 120/1261 [00:23<03:51,  4.92it/s]
road_width_pixel:  840.939587919
road_width_pixel:  850.801580519
 10%|▉         | 123/1261 [00:23<03:39,  5.19it/s]
road_width_pixel:  845.814728943
road_width_pixel:  837.282579015
 10%|▉         | 124/1261 [00:23<03:48,  4.97it/s]
road_width_pixel:  852.406476499
road_width_pixel:  841.596328338
 10%|█         | 127/1261 [00:24<03:34,  5.28it/s]
road_width_pixel:  852.467999328
road_width_pixel:  832.812931293
 10%|█         | 129/1261 [00:24<03:32,  5.32it/s]
road_width_pixel:  831.847891063
road_width_pixel:  831.806550202
 10%|█         | 131/1261 [00:25<03:29,  5.40it/s]
road_width_pixel:  832.101605935
road_width_pixel:  832.915382904
 11%|█         | 133/1261 [00:25<03:31,  5.33it/s]
road_width_pixel:  831.749204458
road_width_pixel:  834.142257707
 11%|█         | 135/1261 [00:25<03:24,  5.51it/s]
road_width_pixel:  830.788065543
road_width_pixel:  827.040788883
 11%|█         | 136/1261 [00:26<03:32,  5.30it/s]
road_width_pixel:  830.897629002
road_width_pixel:  845.050716239
 11%|█         | 139/1261 [00:26<03:25,  5.47it/s]
road_width_pixel:  851.064481092
road_width_pixel:  855.404494893
 11%|█         | 141/1261 [00:27<03:32,  5.27it/s]
road_width_pixel:  857.149964298
road_width_pixel:  848.551424197
 11%|█▏        | 143/1261 [00:27<03:27,  5.39it/s]
road_width_pixel:  847.802467397
road_width_pixel:  842.163508785
 11%|█▏        | 144/1261 [00:27<03:33,  5.22it/s]
road_width_pixel:  842.226327704
 11%|█▏        | 145/1261 [00:27<03:41,  5.04it/s]
road_width_pixel:  843.643742468
road_width_pixel:  848.845970948
 12%|█▏        | 147/1261 [00:28<03:34,  5.20it/s]
road_width_pixel:  853.038528893
road_width_pixel:  830.272304308
 12%|█▏        | 150/1261 [00:28<03:25,  5.42it/s]
road_width_pixel:  838.022668619
road_width_pixel:  839.668647934
 12%|█▏        | 151/1261 [00:28<03:25,  5.39it/s]
road_width_pixel:  826.785089581
 12%|█▏        | 152/1261 [00:29<03:32,  5.23it/s]
road_width_pixel:  829.696492818
 12%|█▏        | 154/1261 [00:29<03:34,  5.16it/s]
road_width_pixel:  830.734979593
road_width_pixel:  838.425655988
 12%|█▏        | 155/1261 [00:29<03:29,  5.29it/s]
road_width_pixel:  842.234571367
 12%|█▏        | 156/1261 [00:29<03:36,  5.10it/s]
road_width_pixel:  845.152277873
road_width_pixel:  846.545698195
 13%|█▎        | 159/1261 [00:30<03:25,  5.36it/s]
road_width_pixel:  848.973219255
road_width_pixel:  879.588769264
 13%|█▎        | 160/1261 [00:30<03:36,  5.09it/s]
road_width_pixel:  862.408637838
road_width_pixel:  861.106724511
 13%|█▎        | 162/1261 [00:31<03:39,  5.01it/s]
road_width_pixel:  862.175231222
road_width_pixel:  872.029223413
 13%|█▎        | 164/1261 [00:31<03:42,  4.93it/s]
road_width_pixel:  876.613537696
 13%|█▎        | 165/1261 [00:31<03:55,  4.65it/s]
road_width_pixel:  848.660031403
road_width_pixel:  851.639612928
 13%|█▎        | 168/1261 [00:32<03:29,  5.22it/s]
road_width_pixel:  848.92000136
road_width_pixel:  848.706679263
 13%|█▎        | 170/1261 [00:32<03:24,  5.33it/s]
road_width_pixel:  848.882543555
road_width_pixel:  850.647324161
 14%|█▎        | 171/1261 [00:32<03:23,  5.36it/s]
road_width_pixel:  846.781788519
 14%|█▎        | 172/1261 [00:33<03:37,  5.00it/s]
road_width_pixel:  845.610941397
 14%|█▎        | 173/1261 [00:33<03:36,  5.03it/s]
road_width_pixel:  815.973538261
road_width_pixel:  828.129680937
 14%|█▍        | 175/1261 [00:33<03:26,  5.27it/s]
road_width_pixel:  821.998234038
road_width_pixel:  817.050547619
 14%|█▍        | 177/1261 [00:34<03:27,  5.22it/s]
road_width_pixel:  826.186481586
road_width_pixel:  840.672374061
 14%|█▍        | 179/1261 [00:34<03:21,  5.36it/s]
road_width_pixel:  851.146069679
road_width_pixel:  858.222543422
 14%|█▍        | 182/1261 [00:34<03:18,  5.45it/s]
road_width_pixel:  863.70159888
road_width_pixel:  869.920073883
 15%|█▍        | 183/1261 [00:35<03:16,  5.49it/s]
road_width_pixel:  878.790641099
road_width_pixel:  890.428905492
 15%|█▍        | 186/1261 [00:35<03:15,  5.50it/s]
road_width_pixel:  890.479665348
road_width_pixel:  864.744014387
 15%|█▍        | 187/1261 [00:35<03:12,  5.57it/s]
road_width_pixel:  861.895457085
road_width_pixel:  863.973838655
 15%|█▍        | 189/1261 [00:36<03:33,  5.03it/s]
road_width_pixel:  865.703011131
 15%|█▌        | 191/1261 [00:36<03:27,  5.16it/s]
road_width_pixel:  863.31259077
road_width_pixel:  860.536160384
 15%|█▌        | 192/1261 [00:36<03:34,  4.97it/s]
road_width_pixel:  851.577946314
road_width_pixel:  845.59581041
 15%|█▌        | 194/1261 [00:37<03:31,  5.04it/s]
road_width_pixel:  840.302253049
road_width_pixel:  837.673794113
 16%|█▌        | 196/1261 [00:37<03:30,  5.05it/s]
road_width_pixel:  847.042938217
road_width_pixel:  871.958911841
 16%|█▌        | 198/1261 [00:38<03:29,  5.07it/s]
road_width_pixel:  876.840894155
 16%|█▌        | 199/1261 [00:38<03:34,  4.95it/s]
road_width_pixel:  876.136925741
 16%|█▌        | 200/1261 [00:38<03:42,  4.76it/s]
road_width_pixel:  868.569892231
 16%|█▌        | 201/1261 [00:38<04:08,  4.27it/s]
road_width_pixel:  864.102079077
 16%|█▌        | 202/1261 [00:39<04:05,  4.31it/s]
road_width_pixel:  870.842923878
road_width_pixel:  866.257343807
 16%|█▌        | 204/1261 [00:39<03:43,  4.74it/s]
road_width_pixel:  860.931217967
road_width_pixel:  860.663091512
 16%|█▋        | 207/1261 [00:39<03:20,  5.26it/s]
road_width_pixel:  861.577332874
road_width_pixel:  862.196154444
 17%|█▋        | 209/1261 [00:40<03:16,  5.36it/s]
road_width_pixel:  856.460758824
road_width_pixel:  854.359329142
 17%|█▋        | 211/1261 [00:40<03:11,  5.48it/s]
road_width_pixel:  851.511995384
road_width_pixel:  859.667244584
 17%|█▋        | 212/1261 [00:40<03:26,  5.09it/s]
road_width_pixel:  863.836794781
road_width_pixel:  875.474695834
 17%|█▋        | 214/1261 [00:41<03:19,  5.25it/s]
road_width_pixel:  871.124687643
road_width_pixel:  861.287700582
 17%|█▋        | 216/1261 [00:41<03:20,  5.21it/s]
road_width_pixel:  859.618156966
road_width_pixel:  855.737996173
 17%|█▋        | 219/1261 [00:42<03:10,  5.47it/s]
road_width_pixel:  854.622908728
road_width_pixel:  852.034597511
 17%|█▋        | 220/1261 [00:42<03:15,  5.33it/s]
road_width_pixel:  855.926874138
road_width_pixel:  873.434158442
 18%|█▊        | 222/1261 [00:42<03:28,  4.98it/s]
road_width_pixel:  862.211215205
 18%|█▊        | 223/1261 [00:43<03:32,  4.88it/s]
road_width_pixel:  846.322950506
 18%|█▊        | 224/1261 [00:43<03:32,  4.88it/s]
road_width_pixel:  850.827623451
road_width_pixel:  855.00893977
 18%|█▊        | 227/1261 [00:43<03:16,  5.27it/s]
road_width_pixel:  834.699881581
road_width_pixel:  834.459635495
 18%|█▊        | 228/1261 [00:44<03:21,  5.13it/s]
road_width_pixel:  836.713768793
road_width_pixel:  838.63989062
 18%|█▊        | 230/1261 [00:44<03:23,  5.07it/s]
road_width_pixel:  839.74142189
 18%|█▊        | 231/1261 [00:44<03:25,  5.00it/s]
road_width_pixel:  837.99876994
 18%|█▊        | 232/1261 [00:44<03:50,  4.47it/s]
road_width_pixel:  840.160303231
 18%|█▊        | 233/1261 [00:45<03:51,  4.43it/s]
road_width_pixel:  848.200112838
road_width_pixel:  843.095747761
 19%|█▊        | 235/1261 [00:45<03:28,  4.93it/s]
road_width_pixel:  829.929050471
 19%|█▊        | 236/1261 [00:45<03:30,  4.87it/s]
road_width_pixel:  842.696580383
 19%|█▉        | 238/1261 [00:46<03:23,  5.03it/s]
road_width_pixel:  843.609506483
road_width_pixel:  830.582723165
 19%|█▉        | 239/1261 [00:46<03:16,  5.20it/s]
road_width_pixel:  833.34382761
 19%|█▉        | 240/1261 [00:46<03:31,  4.84it/s]
road_width_pixel:  842.043175065
 19%|█▉        | 242/1261 [00:46<03:19,  5.11it/s]
road_width_pixel:  844.173303808
road_width_pixel:  850.030270415
 19%|█▉        | 243/1261 [00:47<03:32,  4.80it/s]
road_width_pixel:  852.413111436
 19%|█▉        | 244/1261 [00:47<03:34,  4.74it/s]
road_width_pixel:  854.320120732
 19%|█▉        | 245/1261 [00:47<03:33,  4.75it/s]
road_width_pixel:  851.968514815
road_width_pixel:  854.147772627
 20%|█▉        | 247/1261 [00:47<03:22,  5.00it/s]
road_width_pixel:  856.995348059
road_width_pixel:  842.405716814
 20%|█▉        | 249/1261 [00:48<03:23,  4.98it/s]
road_width_pixel:  835.130619771
road_width_pixel:  840.117436489
 20%|█▉        | 251/1261 [00:48<03:19,  5.07it/s]
road_width_pixel:  843.593327568
 20%|█▉        | 252/1261 [00:49<03:42,  4.53it/s]
road_width_pixel:  849.293362532
 20%|██        | 253/1261 [00:49<03:34,  4.70it/s]
road_width_pixel:  850.142067562
road_width_pixel:  852.18084458
 20%|██        | 255/1261 [00:49<03:26,  4.88it/s]
road_width_pixel:  849.830894178
 20%|██        | 257/1261 [00:50<03:19,  5.04it/s]
road_width_pixel:  848.532604786
road_width_pixel:  827.551669113
 20%|██        | 258/1261 [00:50<03:15,  5.13it/s]
road_width_pixel:  828.859140499
road_width_pixel:  832.371525334
 21%|██        | 261/1261 [00:50<03:06,  5.35it/s]
road_width_pixel:  830.026244243
road_width_pixel:  840.952362756
 21%|██        | 263/1261 [00:51<03:06,  5.35it/s]
road_width_pixel:  831.459968862
road_width_pixel:  839.76314665
 21%|██        | 264/1261 [00:51<03:09,  5.26it/s]
road_width_pixel:  848.086750063
road_width_pixel:  849.536905741
 21%|██        | 266/1261 [00:51<03:16,  5.08it/s]
road_width_pixel:  857.046910653
road_width_pixel:  859.254019201
 21%|██▏       | 269/1261 [00:52<03:08,  5.27it/s]
road_width_pixel:  861.930306718
road_width_pixel:  868.496532839
 21%|██▏       | 271/1261 [00:52<02:59,  5.51it/s]
road_width_pixel:  884.252297188
road_width_pixel:  865.470588436
 22%|██▏       | 272/1261 [00:52<03:00,  5.48it/s]
road_width_pixel:  870.565812627
road_width_pixel:  862.811149434
 22%|██▏       | 274/1261 [00:53<03:08,  5.24it/s]
road_width_pixel:  855.230346635
road_width_pixel:  857.971038035
 22%|██▏       | 276/1261 [00:53<03:12,  5.12it/s]
road_width_pixel:  861.789440009
 22%|██▏       | 277/1261 [00:53<03:20,  4.91it/s]
road_width_pixel:  858.777538811
 22%|██▏       | 278/1261 [00:54<03:30,  4.67it/s]
road_width_pixel:  859.944434741
 22%|██▏       | 279/1261 [00:54<03:28,  4.71it/s]
road_width_pixel:  856.765189976
 22%|██▏       | 280/1261 [00:54<03:36,  4.54it/s]
road_width_pixel:  855.09780338
 22%|██▏       | 281/1261 [00:54<03:44,  4.37it/s]
road_width_pixel:  861.367891116
 22%|██▏       | 282/1261 [00:54<03:38,  4.48it/s]
road_width_pixel:  849.108074955
road_width_pixel:  855.228101179
 23%|██▎       | 284/1261 [00:55<03:27,  4.70it/s]
road_width_pixel:  859.393672611
road_width_pixel:  856.734371326
 23%|██▎       | 286/1261 [00:55<03:20,  4.86it/s]
road_width_pixel:  863.590993289
 23%|██▎       | 287/1261 [00:55<03:24,  4.76it/s]
road_width_pixel:  852.378191624
road_width_pixel:  855.221347299
 23%|██▎       | 290/1261 [00:56<03:08,  5.16it/s]
road_width_pixel:  849.513965232
road_width_pixel:  853.361325145
 23%|██▎       | 291/1261 [00:56<03:04,  5.25it/s]
road_width_pixel:  853.899197749
 23%|██▎       | 292/1261 [00:56<03:13,  5.01it/s]
road_width_pixel:  853.286218385
 23%|██▎       | 294/1261 [00:57<03:08,  5.13it/s]
road_width_pixel:  859.581596118
road_width_pixel:  842.72661265
 23%|██▎       | 296/1261 [00:57<03:02,  5.29it/s]
road_width_pixel:  847.271183335
road_width_pixel:  858.804619161
 24%|██▎       | 297/1261 [00:57<02:59,  5.37it/s]
road_width_pixel:  854.74105962
 24%|██▎       | 299/1261 [00:58<03:09,  5.07it/s]
road_width_pixel:  850.691769163
road_width_pixel:  849.213917863
 24%|██▍       | 300/1261 [00:58<03:06,  5.15it/s]
road_width_pixel:  854.367241622
road_width_pixel:  854.218854769
 24%|██▍       | 302/1261 [00:58<03:12,  4.99it/s]
road_width_pixel:  857.198324928
road_width_pixel:  860.667326653
 24%|██▍       | 304/1261 [00:59<03:12,  4.97it/s]
road_width_pixel:  863.437196709
road_width_pixel:  901.555274098
 24%|██▍       | 306/1261 [00:59<03:12,  4.95it/s]
road_width_pixel:  891.087633566
road_width_pixel:  882.347448688
 24%|██▍       | 308/1261 [01:00<03:19,  4.77it/s]
road_width_pixel:  881.120691898
 25%|██▍       | 309/1261 [01:00<03:21,  4.73it/s]
road_width_pixel:  873.315768396
 25%|██▍       | 310/1261 [01:00<03:34,  4.43it/s]
road_width_pixel:  865.811685022
 25%|██▍       | 311/1261 [01:00<03:29,  4.53it/s]
road_width_pixel:  852.741569865
 25%|██▍       | 312/1261 [01:01<03:35,  4.40it/s]
road_width_pixel:  851.04360836
road_width_pixel:  844.778989584
 25%|██▍       | 314/1261 [01:01<03:18,  4.77it/s]
road_width_pixel:  844.329345095
 25%|██▍       | 315/1261 [01:01<03:17,  4.78it/s]
road_width_pixel:  842.153488013
road_width_pixel:  841.905422607
 25%|██▌       | 317/1261 [01:02<03:03,  5.13it/s]
road_width_pixel:  831.791943924
road_width_pixel:  822.929236237
 25%|██▌       | 319/1261 [01:02<03:00,  5.23it/s]
road_width_pixel:  824.791368304
road_width_pixel:  820.173797899
 25%|██▌       | 321/1261 [01:02<02:55,  5.36it/s]
road_width_pixel:  820.143729673
 26%|██▌       | 322/1261 [01:03<03:25,  4.56it/s]
road_width_pixel:  822.211874138
 26%|██▌       | 323/1261 [01:03<03:16,  4.77it/s]
road_width_pixel:  825.200845771
road_width_pixel:  830.289083503
 26%|██▌       | 325/1261 [01:03<03:03,  5.09it/s]
road_width_pixel:  832.974206139
road_width_pixel:  836.221170944
 26%|██▌       | 327/1261 [01:04<03:09,  4.93it/s]
road_width_pixel:  841.76105915
 26%|██▌       | 328/1261 [01:04<03:12,  4.86it/s]
road_width_pixel:  845.589675472
road_width_pixel:  861.43780163
 26%|██▌       | 330/1261 [01:04<03:20,  4.65it/s]
road_width_pixel:  854.999726771
 26%|██▌       | 331/1261 [01:04<03:17,  4.72it/s]
road_width_pixel:  858.774453536
 26%|██▋       | 332/1261 [01:05<03:16,  4.73it/s]
road_width_pixel:  848.366342491
road_width_pixel:  843.862579549
 26%|██▋       | 334/1261 [01:05<03:13,  4.80it/s]
road_width_pixel:  844.975688068
road_width_pixel:  849.169015357
 27%|██▋       | 336/1261 [01:05<02:59,  5.16it/s]
road_width_pixel:  852.255240118
road_width_pixel:  854.089335445
 27%|██▋       | 338/1261 [01:06<03:00,  5.11it/s]
road_width_pixel:  850.137061726
 27%|██▋       | 340/1261 [01:06<02:57,  5.20it/s]
road_width_pixel:  850.5744228
road_width_pixel:  847.492876736
 27%|██▋       | 341/1261 [01:06<02:52,  5.33it/s]
road_width_pixel:  850.676521339
road_width_pixel:  845.778593154
 27%|██▋       | 344/1261 [01:07<02:48,  5.45it/s]
road_width_pixel:  846.74095683
road_width_pixel:  849.865559561
 27%|██▋       | 345/1261 [01:07<02:50,  5.36it/s]
road_width_pixel:  843.442537895
 27%|██▋       | 346/1261 [01:07<02:56,  5.18it/s]
road_width_pixel:  842.316334877
road_width_pixel:  838.908039257
 28%|██▊       | 348/1261 [01:08<02:52,  5.30it/s]
road_width_pixel:  845.500510286
road_width_pixel:  844.982474575
 28%|██▊       | 351/1261 [01:08<02:52,  5.26it/s]
road_width_pixel:  846.519705974
road_width_pixel:  849.926982087
 28%|██▊       | 352/1261 [01:08<02:49,  5.37it/s]
road_width_pixel:  853.048456284
 28%|██▊       | 353/1261 [01:09<02:54,  5.20it/s]
road_width_pixel:  857.315022927
road_width_pixel:  868.623479464
 28%|██▊       | 356/1261 [01:09<02:53,  5.21it/s]
road_width_pixel:  865.290266086
road_width_pixel:  858.003648356
 28%|██▊       | 357/1261 [01:09<02:48,  5.37it/s]
road_width_pixel:  850.814899674
road_width_pixel:  851.219884584
 29%|██▊       | 360/1261 [01:10<02:45,  5.45it/s]
road_width_pixel:  836.344908482
road_width_pixel:  840.528579314
 29%|██▊       | 361/1261 [01:10<02:44,  5.49it/s]
road_width_pixel:  839.558186983
 29%|██▊       | 362/1261 [01:10<02:47,  5.36it/s]
road_width_pixel:  829.948654853
road_width_pixel:  829.752778729
 29%|██▉       | 364/1261 [01:11<02:45,  5.42it/s]
road_width_pixel:  824.95972129
road_width_pixel:  830.024126334
 29%|██▉       | 366/1261 [01:11<02:55,  5.09it/s]
road_width_pixel:  827.752159743
road_width_pixel:  834.588906392
 29%|██▉       | 368/1261 [01:11<02:49,  5.26it/s]
road_width_pixel:  840.048173778
 29%|██▉       | 369/1261 [01:12<02:53,  5.14it/s]
road_width_pixel:  830.612239708
road_width_pixel:  833.785383136
 30%|██▉       | 372/1261 [01:12<02:44,  5.41it/s]
road_width_pixel:  839.190501768
road_width_pixel:  844.924027657
 30%|██▉       | 373/1261 [01:12<02:40,  5.54it/s]
road_width_pixel:  849.105683063
 30%|██▉       | 374/1261 [01:13<02:49,  5.23it/s]
road_width_pixel:  850.334094548
road_width_pixel:  855.387546806
 30%|██▉       | 376/1261 [01:13<02:46,  5.32it/s]
road_width_pixel:  853.162964566
road_width_pixel:  860.430812492
 30%|██▉       | 378/1261 [01:13<02:54,  5.05it/s]
road_width_pixel:  858.17056485
 30%|███       | 379/1261 [01:14<02:56,  5.01it/s]
road_width_pixel:  860.869466981
road_width_pixel:  861.222944249
 30%|███       | 381/1261 [01:14<02:48,  5.23it/s]
road_width_pixel:  862.495259147
 30%|███       | 382/1261 [01:14<02:59,  4.90it/s]
road_width_pixel:  854.430972419
 30%|███       | 383/1261 [01:14<02:57,  4.93it/s]
road_width_pixel:  847.33521655
road_width_pixel:  848.968253193
 31%|███       | 385/1261 [01:15<02:47,  5.24it/s]
road_width_pixel:  849.873797411
 31%|███       | 386/1261 [01:15<02:53,  5.05it/s]
road_width_pixel:  848.639962675
road_width_pixel:  848.977697791
 31%|███       | 389/1261 [01:15<02:41,  5.41it/s]
road_width_pixel:  847.825429718
road_width_pixel:  854.073781338
 31%|███       | 390/1261 [01:16<02:49,  5.15it/s]
road_width_pixel:  857.733677287
road_width_pixel:  860.669811524
 31%|███       | 393/1261 [01:16<02:39,  5.45it/s]
road_width_pixel:  857.921584611
road_width_pixel:  849.937664966
 31%|███       | 394/1261 [01:16<02:38,  5.47it/s]
road_width_pixel:  857.975820261
 31%|███▏      | 396/1261 [01:17<02:40,  5.41it/s]
road_width_pixel:  853.161072742
road_width_pixel:  853.006883549
 31%|███▏      | 397/1261 [01:17<02:36,  5.51it/s]
road_width_pixel:  852.140028144
road_width_pixel:  849.013398321
 32%|███▏      | 399/1261 [01:17<02:41,  5.34it/s]
road_width_pixel:  851.598262074
road_width_pixel:  852.671620012
 32%|███▏      | 401/1261 [01:18<02:40,  5.37it/s]
road_width_pixel:  856.387963028
 32%|███▏      | 402/1261 [01:18<02:55,  4.90it/s]
road_width_pixel:  862.949529115
 32%|███▏      | 403/1261 [01:18<02:54,  4.93it/s]
road_width_pixel:  862.41315856
road_width_pixel:  863.968568526
 32%|███▏      | 405/1261 [01:19<02:55,  4.88it/s]
road_width_pixel:  845.48398618
road_width_pixel:  848.236151288
 32%|███▏      | 407/1261 [01:19<02:53,  4.91it/s]
road_width_pixel:  850.205835369
 32%|███▏      | 408/1261 [01:19<02:59,  4.75it/s]
road_width_pixel:  849.765188705
road_width_pixel:  846.460066812
 33%|███▎      | 410/1261 [01:20<03:01,  4.69it/s]
road_width_pixel:  839.452363126
 33%|███▎      | 411/1261 [01:20<03:00,  4.70it/s]
road_width_pixel:  842.394018574
road_width_pixel:  846.62772613
 33%|███▎      | 413/1261 [01:20<02:51,  4.95it/s]
road_width_pixel:  849.010461717
 33%|███▎      | 414/1261 [01:20<03:00,  4.69it/s]
road_width_pixel:  869.66086325
road_width_pixel:  864.919768206
 33%|███▎      | 416/1261 [01:21<02:49,  4.98it/s]
road_width_pixel:  865.37370634
 33%|███▎      | 417/1261 [01:21<02:52,  4.90it/s]
road_width_pixel:  853.299535905
 33%|███▎      | 418/1261 [01:21<02:58,  4.71it/s]
road_width_pixel:  857.993340144
road_width_pixel:  862.200404311
 33%|███▎      | 421/1261 [01:22<02:42,  5.16it/s]
road_width_pixel:  856.655739838
road_width_pixel:  849.051009422
 33%|███▎      | 422/1261 [01:22<02:45,  5.06it/s]
road_width_pixel:  845.23143307
road_width_pixel:  846.441919754
 34%|███▎      | 424/1261 [01:22<02:40,  5.23it/s]
road_width_pixel:  848.455227013
road_width_pixel:  848.576031144
 34%|███▍      | 426/1261 [01:23<02:39,  5.24it/s]
road_width_pixel:  864.065933229
road_width_pixel:  858.676145678
 34%|███▍      | 429/1261 [01:23<02:32,  5.44it/s]
road_width_pixel:  850.899547649
road_width_pixel:  842.412375863
 34%|███▍      | 430/1261 [01:24<02:37,  5.26it/s]
road_width_pixel:  847.45952209
road_width_pixel:  851.138821967
 34%|███▍      | 432/1261 [01:24<02:33,  5.39it/s]
road_width_pixel:  850.718306361
road_width_pixel:  853.556689703
 34%|███▍      | 435/1261 [01:24<02:31,  5.45it/s]
road_width_pixel:  844.495070798
road_width_pixel:  845.788840449
 35%|███▍      | 436/1261 [01:25<02:30,  5.48it/s]
road_width_pixel:  846.455135249
road_width_pixel:  856.071691094
 35%|███▍      | 438/1261 [01:25<02:37,  5.24it/s]
road_width_pixel:  858.206607223
road_width_pixel:  837.792728115
 35%|███▍      | 441/1261 [01:26<02:29,  5.49it/s]
road_width_pixel:  841.015527439
road_width_pixel:  844.28076333
 35%|███▌      | 442/1261 [01:26<02:37,  5.20it/s]
road_width_pixel:  847.334541553
 35%|███▌      | 444/1261 [01:26<02:34,  5.28it/s]
road_width_pixel:  849.343111152
road_width_pixel:  848.364076395
 35%|███▌      | 445/1261 [01:26<02:30,  5.42it/s]
road_width_pixel:  852.173494876
road_width_pixel:  850.152093534
 35%|███▌      | 447/1261 [01:27<02:30,  5.39it/s]
road_width_pixel:  849.618889949
road_width_pixel:  852.979587304
 36%|███▌      | 449/1261 [01:27<02:33,  5.28it/s]
road_width_pixel:  854.399655693
road_width_pixel:  850.758384475
 36%|███▌      | 452/1261 [01:28<02:27,  5.47it/s]
road_width_pixel:  844.991917278
road_width_pixel:  854.112192321
 36%|███▌      | 453/1261 [01:28<02:25,  5.56it/s]
road_width_pixel:  865.837563708
road_width_pixel:  862.480368672
 36%|███▌      | 455/1261 [01:28<02:28,  5.42it/s]
road_width_pixel:  859.305380531
road_width_pixel:  860.650071088
 36%|███▌      | 457/1261 [01:29<02:29,  5.38it/s]
road_width_pixel:  860.005151292
road_width_pixel:  858.917143907
 36%|███▋      | 459/1261 [01:29<02:34,  5.18it/s]
road_width_pixel:  857.380985286
 36%|███▋      | 460/1261 [01:29<02:42,  4.92it/s]
road_width_pixel:  858.762660705
road_width_pixel:  876.678152624
 37%|███▋      | 462/1261 [01:30<02:47,  4.76it/s]
road_width_pixel:  880.089392689
road_width_pixel:  880.266244156
 37%|███▋      | 464/1261 [01:30<02:43,  4.86it/s]
road_width_pixel:  864.323049429
road_width_pixel:  868.120553193
 37%|███▋      | 466/1261 [01:30<02:50,  4.65it/s]
road_width_pixel:  868.027212004
road_width_pixel:  865.128693396
 37%|███▋      | 469/1261 [01:31<02:33,  5.18it/s]
road_width_pixel:  862.021421449
road_width_pixel:  854.62190198
 37%|███▋      | 470/1261 [01:31<02:37,  5.03it/s]
road_width_pixel:  854.1495561
road_width_pixel:  851.344262679
 37%|███▋      | 472/1261 [01:32<02:34,  5.09it/s]
road_width_pixel:  850.978726517
road_width_pixel:  851.648882472
 38%|███▊      | 474/1261 [01:32<02:32,  5.16it/s]
road_width_pixel:  853.31629397
road_width_pixel:  849.341570497
 38%|███▊      | 476/1261 [01:32<02:25,  5.41it/s]
road_width_pixel:  838.295090834
road_width_pixel:  833.745246709
 38%|███▊      | 478/1261 [01:33<02:31,  5.17it/s]
road_width_pixel:  842.87293114
road_width_pixel:  841.588041169
 38%|███▊      | 481/1261 [01:33<02:25,  5.35it/s]
road_width_pixel:  849.551718956
road_width_pixel:  844.283404725
 38%|███▊      | 482/1261 [01:34<02:28,  5.26it/s]
road_width_pixel:  846.085980658
road_width_pixel:  849.506245471
 38%|███▊      | 485/1261 [01:34<02:19,  5.54it/s]
road_width_pixel:  851.118412976
road_width_pixel:  861.231762461
 39%|███▊      | 486/1261 [01:34<02:26,  5.27it/s]
road_width_pixel:  868.474373184
road_width_pixel:  878.588704733
 39%|███▊      | 488/1261 [01:35<02:23,  5.39it/s]
road_width_pixel:  857.122231836
road_width_pixel:  860.686688619
 39%|███▉      | 491/1261 [01:35<02:29,  5.15it/s]
road_width_pixel:  863.767461609
road_width_pixel:  848.917395876
 39%|███▉      | 493/1261 [01:36<02:23,  5.35it/s]
road_width_pixel:  852.852692087
road_width_pixel:  852.848599091
 39%|███▉      | 495/1261 [01:36<02:24,  5.29it/s]
road_width_pixel:  852.224881522
road_width_pixel:  851.842931981
 39%|███▉      | 496/1261 [01:36<02:20,  5.45it/s]
road_width_pixel:  852.39353818
road_width_pixel:  868.733272271
 39%|███▉      | 498/1261 [01:37<02:24,  5.27it/s]
road_width_pixel:  870.446374725
road_width_pixel:  867.486399751
 40%|███▉      | 501/1261 [01:37<02:17,  5.51it/s]
road_width_pixel:  870.655924411
road_width_pixel:  871.93549083
 40%|███▉      | 502/1261 [01:37<02:21,  5.37it/s]
road_width_pixel:  877.96953987
road_width_pixel:  877.415032173
 40%|████      | 505/1261 [01:38<02:21,  5.34it/s]
road_width_pixel:  879.691577255
road_width_pixel:  875.484222264
 40%|████      | 506/1261 [01:38<02:26,  5.15it/s]
road_width_pixel:  870.048777183
road_width_pixel:  871.576104247
 40%|████      | 508/1261 [01:38<02:24,  5.20it/s]
road_width_pixel:  868.808266094
road_width_pixel:  861.311553539
 40%|████      | 510/1261 [01:39<02:23,  5.22it/s]
road_width_pixel:  873.492894703
road_width_pixel:  874.137779317
 41%|████      | 513/1261 [01:39<02:17,  5.45it/s]
road_width_pixel:  873.229462711
road_width_pixel:  856.727989596
 41%|████      | 515/1261 [01:40<02:24,  5.17it/s]
road_width_pixel:  860.740138662
road_width_pixel:  863.660321408
 41%|████      | 517/1261 [01:40<02:18,  5.36it/s]
road_width_pixel:  864.384167044
road_width_pixel:  860.09111706
 41%|████      | 518/1261 [01:40<02:21,  5.24it/s]
road_width_pixel:  852.533342065
road_width_pixel:  854.805506975
 41%|████▏     | 521/1261 [01:41<02:19,  5.29it/s]
road_width_pixel:  851.550084492
road_width_pixel:  850.113084174
 41%|████▏     | 522/1261 [01:41<02:24,  5.12it/s]
road_width_pixel:  865.439703439
road_width_pixel:  874.925169921
 42%|████▏     | 525/1261 [01:42<02:20,  5.25it/s]
road_width_pixel:  873.348556694
road_width_pixel:  862.808026834
 42%|████▏     | 526/1261 [01:42<02:22,  5.14it/s]
road_width_pixel:  867.576096092
road_width_pixel:  863.114059824
 42%|████▏     | 529/1261 [01:42<02:12,  5.53it/s]
road_width_pixel:  866.69666131
road_width_pixel:  869.121873344
 42%|████▏     | 530/1261 [01:43<02:17,  5.32it/s]
road_width_pixel:  859.310052107
road_width_pixel:  858.24123504
 42%|████▏     | 532/1261 [01:43<02:12,  5.49it/s]
road_width_pixel:  854.291626048
 42%|████▏     | 533/1261 [01:43<02:18,  5.25it/s]
road_width_pixel:  866.015802775
 42%|████▏     | 534/1261 [01:43<02:24,  5.04it/s]
road_width_pixel:  855.591354185
road_width_pixel:  853.820997037
 43%|████▎     | 537/1261 [01:44<02:16,  5.31it/s]
road_width_pixel:  830.620434752
road_width_pixel:  844.785384747
 43%|████▎     | 538/1261 [01:44<02:17,  5.26it/s]
road_width_pixel:  845.653446925
road_width_pixel:  855.796736347
 43%|████▎     | 540/1261 [01:45<02:19,  5.16it/s]
road_width_pixel:  854.565477881
road_width_pixel:  855.299296697
 43%|████▎     | 542/1261 [01:45<02:21,  5.07it/s]
road_width_pixel:  852.088582105
 43%|████▎     | 543/1261 [01:45<02:29,  4.80it/s]
road_width_pixel:  851.796637683
road_width_pixel:  843.319599833
 43%|████▎     | 546/1261 [01:46<02:19,  5.12it/s]
road_width_pixel:  855.696412845
road_width_pixel:  848.712627527
 43%|████▎     | 547/1261 [01:46<02:18,  5.16it/s]
road_width_pixel:  855.844708641
road_width_pixel:  861.167981005
 44%|████▎     | 549/1261 [01:46<02:16,  5.21it/s]
road_width_pixel:  866.926599663
road_width_pixel:  879.663342548
 44%|████▎     | 551/1261 [01:47<02:14,  5.28it/s]
road_width_pixel:  873.112432378
 44%|████▍     | 552/1261 [01:47<02:23,  4.94it/s]
road_width_pixel:  873.978081142
 44%|████▍     | 553/1261 [01:47<02:22,  4.97it/s]
road_width_pixel:  876.611300533
road_width_pixel:  867.7395563
 44%|████▍     | 555/1261 [01:48<02:17,  5.15it/s]
road_width_pixel:  866.910618511
 44%|████▍     | 556/1261 [01:48<02:23,  4.90it/s]
road_width_pixel:  881.561560938
road_width_pixel:  881.145189262
 44%|████▍     | 558/1261 [01:48<02:17,  5.12it/s]
road_width_pixel:  882.864166552
road_width_pixel:  895.600815246
 44%|████▍     | 560/1261 [01:49<02:18,  5.05it/s]
road_width_pixel:  914.473226642
 44%|████▍     | 561/1261 [01:49<02:22,  4.90it/s]
road_width_pixel:  929.228445924
road_width_pixel:  932.155224842
 45%|████▍     | 563/1261 [01:49<02:14,  5.18it/s]
road_width_pixel:  931.497629926
 45%|████▍     | 564/1261 [01:49<02:21,  4.92it/s]
road_width_pixel:  932.879218776
 45%|████▍     | 566/1261 [01:50<02:19,  4.98it/s]
road_width_pixel:  930.801157215
road_width_pixel:  924.041201468
 45%|████▍     | 567/1261 [01:50<02:15,  5.11it/s]
road_width_pixel:  892.607425562
 45%|████▌     | 569/1261 [01:50<02:14,  5.16it/s]
road_width_pixel:  870.131551233
road_width_pixel:  878.227438455
 45%|████▌     | 570/1261 [01:51<02:13,  5.18it/s]
road_width_pixel:  872.371197066
road_width_pixel:  872.775237549
 45%|████▌     | 572/1261 [01:51<02:16,  5.04it/s]
road_width_pixel:  891.925145009
road_width_pixel:  891.317094261
 46%|████▌     | 574/1261 [01:51<02:12,  5.19it/s]
road_width_pixel:  888.152228262
road_width_pixel:  891.406894011
 46%|████▌     | 576/1261 [01:52<02:14,  5.09it/s]
road_width_pixel:  897.604950132
road_width_pixel:  891.683173357
 46%|████▌     | 578/1261 [01:52<02:11,  5.21it/s]
road_width_pixel:  902.616880231
road_width_pixel:  901.038739061
 46%|████▌     | 580/1261 [01:53<02:19,  4.87it/s]
road_width_pixel:  892.698838714
 46%|████▌     | 581/1261 [01:53<02:20,  4.85it/s]
road_width_pixel:  913.936514855
road_width_pixel:  911.162971134
 46%|████▌     | 583/1261 [01:53<02:11,  5.17it/s]
road_width_pixel:  911.110495847
 46%|████▋     | 585/1261 [01:53<02:12,  5.11it/s]
road_width_pixel:  901.383138673
road_width_pixel:  901.111769969
 46%|████▋     | 586/1261 [01:54<02:13,  5.07it/s]
road_width_pixel:  905.840703593
road_width_pixel:  908.580966493
 47%|████▋     | 588/1261 [01:54<02:11,  5.12it/s]
road_width_pixel:  918.192651429
road_width_pixel:  935.6337989
 47%|████▋     | 591/1261 [01:55<02:03,  5.43it/s]
road_width_pixel:  918.815457437
road_width_pixel:  920.165459684
 47%|████▋     | 592/1261 [01:55<02:09,  5.17it/s]
road_width_pixel:  912.637715437
road_width_pixel:  911.273621668
 47%|████▋     | 595/1261 [01:55<02:01,  5.49it/s]
road_width_pixel:  906.819300571
road_width_pixel:  900.146652511
 47%|████▋     | 597/1261 [01:56<02:03,  5.38it/s]
road_width_pixel:  892.90575484
road_width_pixel:  897.487988606
 47%|████▋     | 598/1261 [01:56<02:05,  5.29it/s]
road_width_pixel:  913.266935021
road_width_pixel:  890.194420366
 48%|████▊     | 600/1261 [01:56<02:08,  5.14it/s]
road_width_pixel:  900.639692569
 48%|████▊     | 601/1261 [01:57<02:11,  5.01it/s]
road_width_pixel:  889.565820669
road_width_pixel:  880.887036353
 48%|████▊     | 603/1261 [01:57<02:06,  5.19it/s]
road_width_pixel:  936.922075128
road_width_pixel:  933.113413187
 48%|████▊     | 605/1261 [01:57<02:12,  4.95it/s]
road_width_pixel:  901.345245264
road_width_pixel:  909.294172942
 48%|████▊     | 607/1261 [01:58<02:08,  5.08it/s]
road_width_pixel:  934.055395872
 48%|████▊     | 608/1261 [01:58<02:14,  4.85it/s]
road_width_pixel:  971.560852378
 48%|████▊     | 609/1261 [01:58<02:14,  4.83it/s]
road_width_pixel:  1003.5815164
road_width_pixel:  1046.85094839
 48%|████▊     | 611/1261 [01:59<02:06,  5.12it/s]
road_width_pixel:  1048.1026867
road_width_pixel:  1054.08158913
 49%|████▊     | 613/1261 [01:59<02:11,  4.94it/s]
road_width_pixel:  1051.429134
road_width_pixel:  1043.524992
 49%|████▉     | 615/1261 [01:59<02:06,  5.10it/s]
road_width_pixel:  1032.86336489
 49%|████▉     | 616/1261 [02:00<02:11,  4.90it/s]
road_width_pixel:  991.743527787
road_width_pixel:  931.80875187
 49%|████▉     | 618/1261 [02:00<02:08,  5.01it/s]
road_width_pixel:  910.111162959
road_width_pixel:  887.876144365
 49%|████▉     | 620/1261 [02:00<02:06,  5.08it/s]
road_width_pixel:  889.743858652
 49%|████▉     | 621/1261 [02:01<02:08,  4.98it/s]
road_width_pixel:  869.50784746
road_width_pixel:  863.992949613
 49%|████▉     | 623/1261 [02:01<02:02,  5.19it/s]
road_width_pixel:  858.979719784
 49%|████▉     | 624/1261 [02:01<02:10,  4.89it/s]
road_width_pixel:  863.598869621
road_width_pixel:  857.931495539
 50%|████▉     | 626/1261 [02:02<02:08,  4.94it/s]
road_width_pixel:  853.867083344
 50%|████▉     | 627/1261 [02:02<02:08,  4.93it/s]
road_width_pixel:  858.093581512
 50%|████▉     | 628/1261 [02:02<02:12,  4.76it/s]
road_width_pixel:  854.38129591
 50%|████▉     | 629/1261 [02:02<02:11,  4.81it/s]
road_width_pixel:  869.014507778
 50%|████▉     | 630/1261 [02:02<02:10,  4.84it/s]
road_width_pixel:  892.778995362
road_width_pixel:  899.527666651
 50%|█████     | 632/1261 [02:03<02:10,  4.81it/s]
road_width_pixel:  891.524454656
road_width_pixel:  901.976480248
 50%|█████     | 634/1261 [02:03<02:03,  5.09it/s]
road_width_pixel:  893.449835402
 50%|█████     | 635/1261 [02:03<02:05,  5.00it/s]
road_width_pixel:  883.316809129
road_width_pixel:  876.498453583
 51%|█████     | 638/1261 [02:04<02:02,  5.09it/s]
road_width_pixel:  864.046929577
road_width_pixel:  856.495565317
 51%|█████     | 639/1261 [02:04<02:04,  5.01it/s]
road_width_pixel:  858.749114243
 51%|█████     | 640/1261 [02:04<02:06,  4.92it/s]
road_width_pixel:  865.567494504
road_width_pixel:  863.803212909
 51%|█████     | 643/1261 [02:05<02:00,  5.15it/s]
road_width_pixel:  867.20559451
road_width_pixel:  871.205232399
 51%|█████     | 644/1261 [02:05<02:03,  5.00it/s]
road_width_pixel:  864.69534118
road_width_pixel:  860.284764426
 51%|█████▏    | 647/1261 [02:06<01:57,  5.24it/s]
road_width_pixel:  856.371943459
road_width_pixel:  846.908086243
 51%|█████▏    | 648/1261 [02:06<01:58,  5.17it/s]
road_width_pixel:  840.735227562
road_width_pixel:  837.132219518
 52%|█████▏    | 651/1261 [02:07<01:53,  5.39it/s]
road_width_pixel:  842.979079724
road_width_pixel:  841.06246459
 52%|█████▏    | 652/1261 [02:07<02:00,  5.05it/s]
road_width_pixel:  839.393772186
 52%|█████▏    | 653/1261 [02:07<02:06,  4.79it/s]
road_width_pixel:  836.040155062
road_width_pixel:  841.455916409
 52%|█████▏    | 655/1261 [02:07<02:00,  5.02it/s]
road_width_pixel:  832.533192658
 52%|█████▏    | 656/1261 [02:08<02:02,  4.92it/s]
road_width_pixel:  827.264568392
road_width_pixel:  826.928966688
 52%|█████▏    | 658/1261 [02:08<02:00,  5.00it/s]
road_width_pixel:  823.285725567
road_width_pixel:  829.422488696
 52%|█████▏    | 660/1261 [02:08<02:04,  4.84it/s]
road_width_pixel:  823.397815252
 52%|█████▏    | 661/1261 [02:09<02:06,  4.76it/s]
road_width_pixel:  824.495686657
road_width_pixel:  829.83863413
 53%|█████▎    | 663/1261 [02:09<01:59,  5.01it/s]
road_width_pixel:  833.304910054
 53%|█████▎    | 664/1261 [02:09<02:04,  4.81it/s]
road_width_pixel:  838.08442507
 53%|█████▎    | 665/1261 [02:09<02:06,  4.71it/s]
road_width_pixel:  838.47625936
road_width_pixel:  837.46289652
 53%|█████▎    | 667/1261 [02:10<01:58,  5.03it/s]
road_width_pixel:  843.813239676
 53%|█████▎    | 668/1261 [02:10<02:01,  4.89it/s]
road_width_pixel:  841.604163655
road_width_pixel:  843.890543281
 53%|█████▎    | 670/1261 [02:10<01:56,  5.09it/s]
road_width_pixel:  847.504533024
road_width_pixel:  851.963276409
 53%|█████▎    | 672/1261 [02:11<01:59,  4.93it/s]
road_width_pixel:  849.142306117
road_width_pixel:  850.839903352
 53%|█████▎    | 674/1261 [02:11<01:55,  5.06it/s]
road_width_pixel:  849.707326123
road_width_pixel:  851.495035078
 54%|█████▎    | 676/1261 [02:12<02:04,  4.69it/s]
road_width_pixel:  849.665800541
road_width_pixel:  848.719693464
 54%|█████▍    | 679/1261 [02:12<01:52,  5.16it/s]
road_width_pixel:  847.914596032
road_width_pixel:  861.630356043
 54%|█████▍    | 680/1261 [02:12<01:56,  4.97it/s]
road_width_pixel:  858.116104493
road_width_pixel:  839.86064741
 54%|█████▍    | 683/1261 [02:13<01:49,  5.27it/s]
road_width_pixel:  843.168114466
road_width_pixel:  847.641459821
 54%|█████▍    | 684/1261 [02:13<01:52,  5.13it/s]
road_width_pixel:  847.640922577
road_width_pixel:  841.38618999
 54%|█████▍    | 687/1261 [02:14<01:45,  5.46it/s]
road_width_pixel:  839.90575984
road_width_pixel:  838.55102001
 55%|█████▍    | 688/1261 [02:14<01:50,  5.19it/s]
road_width_pixel:  839.518838827
road_width_pixel:  841.187000234
 55%|█████▍    | 691/1261 [02:15<01:47,  5.29it/s]
road_width_pixel:  834.69135491
road_width_pixel:  831.509592352
 55%|█████▍    | 693/1261 [02:15<01:46,  5.31it/s]
road_width_pixel:  823.404600418
road_width_pixel:  811.607818184
 55%|█████▌    | 694/1261 [02:15<01:46,  5.31it/s]
road_width_pixel:  818.061221969
road_width_pixel:  827.055886018
 55%|█████▌    | 696/1261 [02:15<01:51,  5.07it/s]
road_width_pixel:  831.332360612
 55%|█████▌    | 698/1261 [02:16<01:47,  5.22it/s]
road_width_pixel:  827.792979318
road_width_pixel:  831.924894803
 55%|█████▌    | 699/1261 [02:16<01:44,  5.38it/s]
road_width_pixel:  834.23085352
 56%|█████▌    | 700/1261 [02:16<01:49,  5.14it/s]
road_width_pixel:  833.738251042
road_width_pixel:  835.43536495
 56%|█████▌    | 703/1261 [02:17<01:45,  5.30it/s]
road_width_pixel:  838.740857173
road_width_pixel:  835.022831965
 56%|█████▌    | 704/1261 [02:17<01:49,  5.08it/s]
road_width_pixel:  839.917389966
road_width_pixel:  838.749561854
 56%|█████▌    | 706/1261 [02:17<01:48,  5.14it/s]
road_width_pixel:  842.678337672
road_width_pixel:  843.552464113
 56%|█████▌    | 709/1261 [02:18<01:44,  5.26it/s]
road_width_pixel:  840.773582115
road_width_pixel:  838.876068752
 56%|█████▋    | 711/1261 [02:18<01:43,  5.32it/s]
road_width_pixel:  839.676292528
road_width_pixel:  839.704448156
 56%|█████▋    | 712/1261 [02:19<01:44,  5.27it/s]
road_width_pixel:  841.294715174
road_width_pixel:  841.385186602
 57%|█████▋    | 715/1261 [02:19<01:41,  5.39it/s]
road_width_pixel:  837.066316995
road_width_pixel:  831.320801289
 57%|█████▋    | 717/1261 [02:19<01:40,  5.42it/s]
road_width_pixel:  833.553329641
road_width_pixel:  833.27674
 57%|█████▋    | 718/1261 [02:20<01:43,  5.25it/s]
road_width_pixel:  838.502571072
 57%|█████▋    | 719/1261 [02:20<01:43,  5.25it/s]
road_width_pixel:  835.290891356
road_width_pixel:  836.914997502
 57%|█████▋    | 721/1261 [02:20<01:43,  5.24it/s]
road_width_pixel:  838.013186344
road_width_pixel:  831.038510869
 57%|█████▋    | 723/1261 [02:21<01:44,  5.14it/s]
road_width_pixel:  832.254937339
road_width_pixel:  834.544664709
 58%|█████▊    | 726/1261 [02:21<01:39,  5.39it/s]
road_width_pixel:  837.046562297
road_width_pixel:  835.04147477
 58%|█████▊    | 727/1261 [02:21<01:41,  5.28it/s]
road_width_pixel:  834.559112112
road_width_pixel:  835.688749983
 58%|█████▊    | 730/1261 [02:22<01:37,  5.43it/s]
road_width_pixel:  835.732510987
road_width_pixel:  835.081719647
 58%|█████▊    | 731/1261 [02:22<01:36,  5.48it/s]
road_width_pixel:  826.760071559
road_width_pixel:  829.880310389
 58%|█████▊    | 734/1261 [02:23<01:37,  5.40it/s]
road_width_pixel:  826.115099881
road_width_pixel:  826.003712983
 58%|█████▊    | 735/1261 [02:23<01:37,  5.40it/s]
road_width_pixel:  825.808754062
road_width_pixel:  825.669973215
 58%|█████▊    | 737/1261 [02:23<01:37,  5.39it/s]
road_width_pixel:  823.111529255
road_width_pixel:  822.237787313
 59%|█████▊    | 739/1261 [02:24<01:34,  5.53it/s]
road_width_pixel:  822.98168684
road_width_pixel:  841.620878272
 59%|█████▉    | 742/1261 [02:24<01:34,  5.52it/s]
road_width_pixel:  831.229639381
road_width_pixel:  824.632818232
 59%|█████▉    | 743/1261 [02:24<01:35,  5.41it/s]
road_width_pixel:  827.943228059
road_width_pixel:  822.103561649
 59%|█████▉    | 745/1261 [02:25<01:39,  5.19it/s]
road_width_pixel:  821.534712136
road_width_pixel:  820.959166062
 59%|█████▉    | 747/1261 [02:25<01:36,  5.31it/s]
road_width_pixel:  824.234937433
road_width_pixel:  827.514426749
 59%|█████▉    | 749/1261 [02:26<01:38,  5.19it/s]
road_width_pixel:  830.200462318
road_width_pixel:  832.456115178
 60%|█████▉    | 751/1261 [02:26<01:34,  5.37it/s]
road_width_pixel:  826.439147428
road_width_pixel:  814.326527759
 60%|█████▉    | 754/1261 [02:26<01:33,  5.44it/s]
road_width_pixel:  813.39516438
road_width_pixel:  818.951352732
 60%|█████▉    | 755/1261 [02:27<01:33,  5.38it/s]
road_width_pixel:  815.59749626
 60%|█████▉    | 756/1261 [02:27<01:36,  5.21it/s]
road_width_pixel:  818.520749743
road_width_pixel:  820.209900528
 60%|██████    | 759/1261 [02:27<01:30,  5.54it/s]
road_width_pixel:  817.349788518
road_width_pixel:  818.984085785
 60%|██████    | 760/1261 [02:28<01:34,  5.32it/s]
road_width_pixel:  821.336915256
road_width_pixel:  819.595211696
 61%|██████    | 763/1261 [02:28<01:31,  5.46it/s]
road_width_pixel:  822.265586369
road_width_pixel:  819.844843714
 61%|██████    | 764/1261 [02:28<01:35,  5.20it/s]
road_width_pixel:  803.795004663
road_width_pixel:  802.81486767
 61%|██████    | 767/1261 [02:29<01:30,  5.48it/s]
road_width_pixel:  807.14843831
road_width_pixel:  810.070291796
 61%|██████    | 768/1261 [02:29<01:38,  5.03it/s]
road_width_pixel:  810.123286741
road_width_pixel:  810.840308393
 61%|██████    | 771/1261 [02:30<01:30,  5.40it/s]
road_width_pixel:  813.811986708
road_width_pixel:  820.818410196
 61%|██████    | 772/1261 [02:30<01:33,  5.26it/s]
road_width_pixel:  827.52583599
road_width_pixel:  832.488845862
 61%|██████▏   | 774/1261 [02:30<01:29,  5.41it/s]
road_width_pixel:  835.088283257
road_width_pixel:  836.668192246
 62%|██████▏   | 776/1261 [02:31<01:35,  5.07it/s]
road_width_pixel:  828.695222381
road_width_pixel:  833.71150805
 62%|██████▏   | 779/1261 [02:31<01:29,  5.36it/s]
road_width_pixel:  833.91874154
road_width_pixel:  840.610135939
 62%|██████▏   | 780/1261 [02:31<01:29,  5.37it/s]
road_width_pixel:  843.036043098
road_width_pixel:  845.961408976
 62%|██████▏   | 783/1261 [02:32<01:27,  5.46it/s]
road_width_pixel:  847.788489008
road_width_pixel:  847.072655794
 62%|██████▏   | 784/1261 [02:32<01:31,  5.19it/s]
road_width_pixel:  849.12723394
road_width_pixel:  848.519497606
 62%|██████▏   | 787/1261 [02:33<01:27,  5.43it/s]
road_width_pixel:  851.825049874
road_width_pixel:  846.514541525
 62%|██████▏   | 788/1261 [02:33<01:28,  5.37it/s]
road_width_pixel:  835.463004666
road_width_pixel:  841.129530061
 63%|██████▎   | 790/1261 [02:33<01:26,  5.43it/s]
road_width_pixel:  832.133635204
road_width_pixel:  836.083894882
 63%|██████▎   | 792/1261 [02:34<01:28,  5.32it/s]
road_width_pixel:  835.297535417
 63%|██████▎   | 794/1261 [02:34<01:29,  5.24it/s]
road_width_pixel:  833.953674933
road_width_pixel:  834.106733305
 63%|██████▎   | 796/1261 [02:34<01:26,  5.35it/s]
road_width_pixel:  831.894906455
road_width_pixel:  834.237039976
 63%|██████▎   | 798/1261 [02:35<01:24,  5.50it/s]
road_width_pixel:  834.267706294
road_width_pixel:  835.344018217
 63%|██████▎   | 800/1261 [02:35<01:25,  5.38it/s]
road_width_pixel:  834.672814452
road_width_pixel:  845.100856404
 64%|██████▎   | 801/1261 [02:35<01:26,  5.33it/s]
road_width_pixel:  842.848334578
 64%|██████▎   | 802/1261 [02:36<01:29,  5.12it/s]
road_width_pixel:  829.219030572
road_width_pixel:  824.782231403
 64%|██████▍   | 805/1261 [02:36<01:24,  5.37it/s]
road_width_pixel:  824.439744546
road_width_pixel:  817.434498065
 64%|██████▍   | 806/1261 [02:36<01:28,  5.14it/s]
road_width_pixel:  817.330920425
 64%|██████▍   | 807/1261 [02:36<01:28,  5.12it/s]
road_width_pixel:  822.412879097
road_width_pixel:  823.100702905
 64%|██████▍   | 809/1261 [02:37<01:25,  5.29it/s]
road_width_pixel:  825.41122488
 64%|██████▍   | 810/1261 [02:37<01:27,  5.18it/s]
road_width_pixel:  827.569784691
 64%|██████▍   | 811/1261 [02:37<01:29,  5.01it/s]
road_width_pixel:  830.34769962
road_width_pixel:  858.734663642
 64%|██████▍   | 813/1261 [02:38<01:25,  5.25it/s]
road_width_pixel:  858.828814944
road_width_pixel:  864.92341636
 65%|██████▍   | 816/1261 [02:38<01:21,  5.49it/s]
road_width_pixel:  854.497051721
road_width_pixel:  857.378974981
 65%|██████▍   | 818/1261 [02:39<01:20,  5.49it/s]
road_width_pixel:  846.065639188
road_width_pixel:  846.941202647
 65%|██████▌   | 820/1261 [02:39<01:19,  5.52it/s]
road_width_pixel:  849.813922624
road_width_pixel:  851.88318566
 65%|██████▌   | 821/1261 [02:39<01:21,  5.37it/s]
road_width_pixel:  853.577070465
 65%|██████▌   | 822/1261 [02:39<01:26,  5.07it/s]
road_width_pixel:  856.705267532
road_width_pixel:  844.926711588
 65%|██████▌   | 824/1261 [02:40<01:23,  5.21it/s]
road_width_pixel:  852.927858204
road_width_pixel:  853.746878065
 66%|██████▌   | 827/1261 [02:40<01:22,  5.25it/s]
road_width_pixel:  841.380284713
road_width_pixel:  839.687844724
 66%|██████▌   | 829/1261 [02:41<01:20,  5.39it/s]
road_width_pixel:  839.12941492
road_width_pixel:  834.383479734
 66%|██████▌   | 830/1261 [02:41<01:23,  5.15it/s]
road_width_pixel:  828.940751189
road_width_pixel:  828.975484677
 66%|██████▌   | 832/1261 [02:41<01:23,  5.15it/s]
road_width_pixel:  825.791513634
road_width_pixel:  823.348913477
 66%|██████▌   | 835/1261 [02:42<01:19,  5.33it/s]
road_width_pixel:  823.43225254
road_width_pixel:  831.662561664
 66%|██████▋   | 837/1261 [02:42<01:16,  5.53it/s]
road_width_pixel:  833.886663197
road_width_pixel:  844.468924723
 66%|██████▋   | 838/1261 [02:42<01:18,  5.41it/s]
road_width_pixel:  838.966082495
 67%|██████▋   | 839/1261 [02:43<01:26,  4.90it/s]
road_width_pixel:  829.636072773
road_width_pixel:  835.825260259
 67%|██████▋   | 841/1261 [02:43<01:19,  5.32it/s]
road_width_pixel:  837.789876643
 67%|██████▋   | 842/1261 [02:43<01:21,  5.12it/s]
road_width_pixel:  841.846970233
road_width_pixel:  844.588619294
 67%|██████▋   | 845/1261 [02:44<01:18,  5.27it/s]
road_width_pixel:  847.664835276
road_width_pixel:  848.757350309
 67%|██████▋   | 846/1261 [02:44<01:17,  5.35it/s]
road_width_pixel:  846.755409274
road_width_pixel:  839.925453824
 67%|██████▋   | 848/1261 [02:44<01:14,  5.56it/s]
road_width_pixel:  846.236601924
road_width_pixel:  860.454288071
 67%|██████▋   | 850/1261 [02:45<01:19,  5.17it/s]
road_width_pixel:  862.669422978
road_width_pixel:  866.393775823
 68%|██████▊   | 852/1261 [02:45<01:17,  5.30it/s]
road_width_pixel:  864.195131021
road_width_pixel:  865.148905049
 68%|██████▊   | 854/1261 [02:45<01:18,  5.18it/s]
road_width_pixel:  871.697885016
road_width_pixel:  874.733924588
 68%|██████▊   | 856/1261 [02:46<01:16,  5.32it/s]
road_width_pixel:  875.066884283
road_width_pixel:  875.888188442
 68%|██████▊   | 859/1261 [02:46<01:17,  5.19it/s]
road_width_pixel:  868.687213714
road_width_pixel:  867.380568482
 68%|██████▊   | 860/1261 [02:47<01:16,  5.22it/s]
road_width_pixel:  867.260434601
road_width_pixel:  870.039440484
 68%|██████▊   | 862/1261 [02:47<01:16,  5.19it/s]
road_width_pixel:  868.759984399
road_width_pixel:  863.305340149
 69%|██████▊   | 864/1261 [02:47<01:13,  5.39it/s]
road_width_pixel:  868.444165294
road_width_pixel:  869.051778751
 69%|██████▊   | 866/1261 [02:48<01:17,  5.13it/s]
road_width_pixel:  869.626940182
 69%|██████▉   | 867/1261 [02:48<01:18,  5.03it/s]
road_width_pixel:  875.225352128
road_width_pixel:  874.303866681
 69%|██████▉   | 869/1261 [02:48<01:14,  5.28it/s]
road_width_pixel:  866.631248627
road_width_pixel:  857.260097144
 69%|██████▉   | 872/1261 [02:49<01:12,  5.38it/s]
road_width_pixel:  840.806832516
road_width_pixel:  850.340735682
 69%|██████▉   | 873/1261 [02:49<01:11,  5.40it/s]
road_width_pixel:  847.726489109
road_width_pixel:  857.263484077
 69%|██████▉   | 876/1261 [02:50<01:10,  5.44it/s]
road_width_pixel:  858.169227889
road_width_pixel:  862.806349647
 70%|██████▉   | 877/1261 [02:50<01:16,  5.04it/s]
road_width_pixel:  860.773715276
road_width_pixel:  865.112035496
 70%|██████▉   | 880/1261 [02:50<01:10,  5.41it/s]
road_width_pixel:  867.307362867
road_width_pixel:  868.709562678
 70%|██████▉   | 881/1261 [02:51<01:12,  5.25it/s]
road_width_pixel:  865.513571965
road_width_pixel:  840.294408023
 70%|███████   | 884/1261 [02:51<01:11,  5.29it/s]
road_width_pixel:  851.415453849
road_width_pixel:  862.277964588
 70%|███████   | 885/1261 [02:51<01:11,  5.22it/s]
road_width_pixel:  871.986838735
 70%|███████   | 886/1261 [02:52<01:15,  4.97it/s]
road_width_pixel:  876.28286207
 70%|███████   | 888/1261 [02:52<01:13,  5.06it/s]
road_width_pixel:  873.680405884
road_width_pixel:  877.255395802
 71%|███████   | 890/1261 [02:52<01:10,  5.26it/s]
road_width_pixel:  877.472790225
road_width_pixel:  879.870556039
 71%|███████   | 892/1261 [02:53<01:09,  5.29it/s]
road_width_pixel:  882.899938648
road_width_pixel:  880.763238104
 71%|███████   | 893/1261 [02:53<01:09,  5.26it/s]
road_width_pixel:  873.709481909
 71%|███████   | 894/1261 [02:53<01:14,  4.94it/s]
road_width_pixel:  851.071602019
road_width_pixel:  854.379581807
 71%|███████   | 896/1261 [02:54<01:09,  5.24it/s]
road_width_pixel:  868.848098408
road_width_pixel:  862.133909485
 71%|███████   | 898/1261 [02:54<01:08,  5.30it/s]
road_width_pixel:  857.477702961
road_width_pixel:  857.179042415
 71%|███████▏  | 901/1261 [02:54<01:06,  5.44it/s]
road_width_pixel:  857.451719613
road_width_pixel:  857.323183551
 72%|███████▏  | 902/1261 [02:55<01:08,  5.22it/s]
road_width_pixel:  856.1600423
road_width_pixel:  855.011243861
 72%|███████▏  | 904/1261 [02:55<01:09,  5.14it/s]
road_width_pixel:  858.24972675
road_width_pixel:  855.990318297
 72%|███████▏  | 906/1261 [02:55<01:09,  5.11it/s]
road_width_pixel:  854.709318503
road_width_pixel:  861.999767473
 72%|███████▏  | 909/1261 [02:56<01:04,  5.47it/s]
road_width_pixel:  861.854729747
road_width_pixel:  859.159936317
 72%|███████▏  | 911/1261 [02:56<01:03,  5.48it/s]
road_width_pixel:  855.631464418
road_width_pixel:  847.92201351
 72%|███████▏  | 913/1261 [02:57<01:02,  5.54it/s]
road_width_pixel:  851.908943157
road_width_pixel:  849.340801466
 73%|███████▎  | 915/1261 [02:57<01:04,  5.38it/s]
road_width_pixel:  847.025351939
road_width_pixel:  846.425120001
 73%|███████▎  | 916/1261 [02:57<01:04,  5.35it/s]
road_width_pixel:  843.248223643
road_width_pixel:  845.388893304
 73%|███████▎  | 918/1261 [02:58<01:05,  5.27it/s]
road_width_pixel:  821.72951978
road_width_pixel:  838.01359505
 73%|███████▎  | 921/1261 [02:58<01:01,  5.49it/s]
road_width_pixel:  852.372213672
road_width_pixel:  849.209184738
 73%|███████▎  | 922/1261 [02:58<01:03,  5.30it/s]
road_width_pixel:  846.262552309
 73%|███████▎  | 924/1261 [02:59<01:03,  5.28it/s]
road_width_pixel:  853.277391863
road_width_pixel:  857.323611999
 73%|███████▎  | 925/1261 [02:59<01:03,  5.29it/s]
road_width_pixel:  857.076760751
road_width_pixel:  856.791416831
 74%|███████▎  | 927/1261 [02:59<01:06,  5.00it/s]
road_width_pixel:  861.765857955
 74%|███████▎  | 928/1261 [03:00<01:12,  4.60it/s]
road_width_pixel:  865.797896995
 74%|███████▎  | 929/1261 [03:00<01:12,  4.58it/s]
road_width_pixel:  865.057650808
 74%|███████▍  | 930/1261 [03:00<01:14,  4.46it/s]
road_width_pixel:  866.764695303
road_width_pixel:  878.456857126
 74%|███████▍  | 933/1261 [03:01<01:11,  4.59it/s]
road_width_pixel:  881.191314351
road_width_pixel:  872.882053113
 74%|███████▍  | 934/1261 [03:01<01:10,  4.62it/s]
road_width_pixel:  873.244490272
road_width_pixel:  876.132839449
 74%|███████▍  | 936/1261 [03:01<01:05,  4.96it/s]
road_width_pixel:  870.015981909
road_width_pixel:  865.052349789
 74%|███████▍  | 938/1261 [03:02<01:04,  5.01it/s]
road_width_pixel:  860.474136299
 74%|███████▍  | 939/1261 [03:02<01:06,  4.83it/s]
road_width_pixel:  857.087824892
road_width_pixel:  852.308986658
 75%|███████▍  | 941/1261 [03:02<01:02,  5.14it/s]
road_width_pixel:  837.014878932
 75%|███████▍  | 942/1261 [03:03<01:05,  4.86it/s]
road_width_pixel:  844.746776063
road_width_pixel:  846.318208097
 75%|███████▍  | 945/1261 [03:03<00:59,  5.36it/s]
road_width_pixel:  852.130697608
road_width_pixel:  844.588322254
 75%|███████▌  | 946/1261 [03:03<01:02,  5.05it/s]
road_width_pixel:  841.81518941
 75%|███████▌  | 947/1261 [03:04<01:03,  4.92it/s]
road_width_pixel:  846.576078628
road_width_pixel:  851.452813348
 75%|███████▌  | 949/1261 [03:04<01:01,  5.06it/s]
road_width_pixel:  855.786633219
road_width_pixel:  857.577628806
 75%|███████▌  | 951/1261 [03:04<01:02,  5.00it/s]
road_width_pixel:  857.842720997
road_width_pixel:  862.141052701
 76%|███████▌  | 953/1261 [03:05<00:59,  5.14it/s]
road_width_pixel:  839.874957464
 76%|███████▌  | 954/1261 [03:05<01:00,  5.04it/s]
road_width_pixel:  842.098600239
road_width_pixel:  854.495128178
 76%|███████▌  | 957/1261 [03:05<00:57,  5.29it/s]
road_width_pixel:  860.396720505
road_width_pixel:  854.355824296
 76%|███████▌  | 958/1261 [03:06<00:58,  5.19it/s]
road_width_pixel:  856.065199853
road_width_pixel:  854.340785193
 76%|███████▌  | 960/1261 [03:06<00:56,  5.29it/s]
road_width_pixel:  861.584750426
road_width_pixel:  860.640670429
 76%|███████▋  | 962/1261 [03:06<00:58,  5.12it/s]
road_width_pixel:  864.866133228
road_width_pixel:  864.829141562
 76%|███████▋  | 964/1261 [03:07<00:58,  5.09it/s]
road_width_pixel:  863.538381094
road_width_pixel:  850.675512406
 77%|███████▋  | 966/1261 [03:07<00:59,  4.99it/s]
road_width_pixel:  857.358252581
road_width_pixel:  867.313664072
 77%|███████▋  | 968/1261 [03:08<00:56,  5.15it/s]
road_width_pixel:  866.15327064
 77%|███████▋  | 969/1261 [03:08<00:59,  4.90it/s]
road_width_pixel:  866.727274997
road_width_pixel:  866.183850357
 77%|███████▋  | 971/1261 [03:08<00:57,  5.07it/s]
road_width_pixel:  870.075239876
road_width_pixel:  874.990780962
 77%|███████▋  | 973/1261 [03:09<00:56,  5.11it/s]
road_width_pixel:  873.565544686
road_width_pixel:  874.588451988
 77%|███████▋  | 975/1261 [03:09<00:55,  5.14it/s]
road_width_pixel:  865.880989296
road_width_pixel:  855.35868521
 77%|███████▋  | 977/1261 [03:09<00:53,  5.32it/s]
road_width_pixel:  852.28734239
 78%|███████▊  | 978/1261 [03:10<00:55,  5.09it/s]
road_width_pixel:  848.07729265
 78%|███████▊  | 979/1261 [03:10<00:56,  4.96it/s]
road_width_pixel:  845.129506975
road_width_pixel:  853.375968008
 78%|███████▊  | 981/1261 [03:10<00:53,  5.28it/s]
road_width_pixel:  856.294224331
road_width_pixel:  857.621662738
 78%|███████▊  | 983/1261 [03:11<00:52,  5.33it/s]
road_width_pixel:  863.626638181
 78%|███████▊  | 984/1261 [03:11<00:54,  5.07it/s]
road_width_pixel:  859.557708885
road_width_pixel:  870.713625821
 78%|███████▊  | 987/1261 [03:11<00:52,  5.22it/s]
road_width_pixel:  866.1697597
road_width_pixel:  854.943969417
 78%|███████▊  | 989/1261 [03:12<00:51,  5.23it/s]
road_width_pixel:  841.261490508
road_width_pixel:  830.320015186
 79%|███████▊  | 990/1261 [03:12<00:54,  5.01it/s]
road_width_pixel:  842.395934349
road_width_pixel:  844.981327204
 79%|███████▊  | 992/1261 [03:12<00:51,  5.18it/s]
road_width_pixel:  854.056609148
road_width_pixel:  871.140121366
 79%|███████▉  | 994/1261 [03:13<00:52,  5.04it/s]
road_width_pixel:  871.348046107
road_width_pixel:  851.322262999
 79%|███████▉  | 997/1261 [03:13<00:49,  5.30it/s]
road_width_pixel:  838.484650667
road_width_pixel:  833.698454327
 79%|███████▉  | 998/1261 [03:14<00:50,  5.19it/s]
road_width_pixel:  846.623342759
road_width_pixel:  852.389495453
 79%|███████▉  | 1001/1261 [03:14<00:49,  5.29it/s]
road_width_pixel:  871.034907099
road_width_pixel:  880.336784065
 79%|███████▉  | 1002/1261 [03:14<00:50,  5.09it/s]
road_width_pixel:  891.387764943
road_width_pixel:  892.847425133
 80%|███████▉  | 1005/1261 [03:15<00:48,  5.33it/s]
road_width_pixel:  896.292105796
road_width_pixel:  946.793525059
 80%|███████▉  | 1006/1261 [03:15<00:51,  4.98it/s]
road_width_pixel:  916.121344706
 80%|███████▉  | 1007/1261 [03:15<00:52,  4.82it/s]
road_width_pixel:  905.357422973
road_width_pixel:  887.20282195
 80%|████████  | 1009/1261 [03:16<00:50,  5.04it/s]
road_width_pixel:  882.058286334
 80%|████████  | 1010/1261 [03:16<00:50,  4.96it/s]
road_width_pixel:  881.707266261
 80%|████████  | 1011/1261 [03:16<00:51,  4.87it/s]
road_width_pixel:  869.508104971
road_width_pixel:  874.887562685
 80%|████████  | 1013/1261 [03:16<00:49,  5.03it/s]
road_width_pixel:  897.637002654
road_width_pixel:  909.848710512
 80%|████████  | 1015/1261 [03:17<00:49,  5.02it/s]
road_width_pixel:  909.366285971
road_width_pixel:  904.426650143
 81%|████████  | 1017/1261 [03:17<00:48,  5.04it/s]
road_width_pixel:  883.738949436
 81%|████████  | 1018/1261 [03:18<00:50,  4.82it/s]
road_width_pixel:  898.327106362
road_width_pixel:  907.153094569
 81%|████████  | 1020/1261 [03:18<00:47,  5.02it/s]
road_width_pixel:  887.073407958
road_width_pixel:  877.988370698
 81%|████████  | 1022/1261 [03:18<00:48,  4.92it/s]
road_width_pixel:  882.42095251
 81%|████████  | 1023/1261 [03:19<00:48,  4.86it/s]
road_width_pixel:  914.589097827
road_width_pixel:  903.818276699
 81%|████████▏ | 1025/1261 [03:19<00:48,  4.91it/s]
road_width_pixel:  911.948446156
road_width_pixel:  884.011337449
 81%|████████▏ | 1027/1261 [03:19<00:47,  4.91it/s]
road_width_pixel:  881.516541038
 82%|████████▏ | 1028/1261 [03:20<00:47,  4.87it/s]
road_width_pixel:  856.232341689
 82%|████████▏ | 1029/1261 [03:20<00:48,  4.77it/s]
road_width_pixel:  865.428451886
road_width_pixel:  892.263539226
 82%|████████▏ | 1031/1261 [03:20<00:47,  4.85it/s]
road_width_pixel:  895.93100225
 82%|████████▏ | 1032/1261 [03:20<00:48,  4.70it/s]
road_width_pixel:  905.530353677
 82%|████████▏ | 1033/1261 [03:21<00:47,  4.75it/s]
road_width_pixel:  905.258091292
 82%|████████▏ | 1034/1261 [03:21<00:49,  4.63it/s]
road_width_pixel:  919.498660872
road_width_pixel:  924.674783196
 82%|████████▏ | 1036/1261 [03:21<00:46,  4.87it/s]
road_width_pixel:  908.08109707
road_width_pixel:  904.852246056
 82%|████████▏ | 1038/1261 [03:22<00:44,  4.96it/s]
road_width_pixel:  926.081639003
 82%|████████▏ | 1039/1261 [03:22<00:45,  4.86it/s]
road_width_pixel:  922.930358659
road_width_pixel:  914.110050461
 83%|████████▎ | 1041/1261 [03:22<00:43,  5.10it/s]
road_width_pixel:  890.737286462
 83%|████████▎ | 1042/1261 [03:22<00:44,  4.91it/s]
road_width_pixel:  864.75731454
 83%|████████▎ | 1043/1261 [03:23<00:45,  4.74it/s]
road_width_pixel:  864.460290208
road_width_pixel:  862.576096531
 83%|████████▎ | 1045/1261 [03:23<00:43,  4.92it/s]
road_width_pixel:  867.837462436
road_width_pixel:  861.145379334
 83%|████████▎ | 1047/1261 [03:23<00:42,  5.03it/s]
road_width_pixel:  864.706136611
road_width_pixel:  868.096732748
 83%|████████▎ | 1050/1261 [03:24<00:40,  5.23it/s]
road_width_pixel:  861.189910506
road_width_pixel:  877.315704304
 83%|████████▎ | 1051/1261 [03:24<00:40,  5.23it/s]
road_width_pixel:  891.275978777
 83%|████████▎ | 1052/1261 [03:24<00:42,  4.96it/s]
road_width_pixel:  911.270166324
road_width_pixel:  919.485899435
 84%|████████▎ | 1054/1261 [03:25<00:40,  5.11it/s]
road_width_pixel:  909.448384022
road_width_pixel:  903.624248569
 84%|████████▎ | 1056/1261 [03:25<00:42,  4.85it/s]
road_width_pixel:  900.547460623
road_width_pixel:  892.51029572
 84%|████████▍ | 1059/1261 [03:26<00:39,  5.11it/s]
road_width_pixel:  883.317978548
road_width_pixel:  874.13466247
 84%|████████▍ | 1060/1261 [03:26<00:40,  5.01it/s]
road_width_pixel:  874.425655519
road_width_pixel:  869.355176628
 84%|████████▍ | 1062/1261 [03:26<00:38,  5.14it/s]
road_width_pixel:  863.463608219
road_width_pixel:  862.46043846
 84%|████████▍ | 1064/1261 [03:27<00:39,  4.93it/s]
road_width_pixel:  865.282972248
 84%|████████▍ | 1065/1261 [03:27<00:41,  4.77it/s]
road_width_pixel:  871.521909449
road_width_pixel:  870.35408769
 85%|████████▍ | 1067/1261 [03:27<00:39,  4.92it/s]
road_width_pixel:  874.320479617
 85%|████████▍ | 1068/1261 [03:28<00:40,  4.79it/s]
road_width_pixel:  876.240209986
 85%|████████▍ | 1069/1261 [03:28<00:40,  4.77it/s]
road_width_pixel:  872.287967195
 85%|████████▍ | 1071/1261 [03:28<00:37,  5.02it/s]
road_width_pixel:  866.26150221
road_width_pixel:  867.471481637
 85%|████████▌ | 1072/1261 [03:28<00:38,  4.96it/s]
road_width_pixel:  837.741553957
 85%|████████▌ | 1073/1261 [03:29<00:38,  4.85it/s]
road_width_pixel:  839.402864886
road_width_pixel:  843.427890143
 85%|████████▌ | 1075/1261 [03:29<00:37,  4.99it/s]
road_width_pixel:  848.140620955
 85%|████████▌ | 1076/1261 [03:29<00:38,  4.82it/s]
road_width_pixel:  844.849665917
 85%|████████▌ | 1077/1261 [03:30<00:40,  4.59it/s]
road_width_pixel:  843.43312598
road_width_pixel:  844.350975262
 86%|████████▌ | 1079/1261 [03:30<00:38,  4.74it/s]
road_width_pixel:  843.220929425
road_width_pixel:  845.267015401
 86%|████████▌ | 1081/1261 [03:30<00:37,  4.79it/s]
road_width_pixel:  847.277741259
road_width_pixel:  847.499173431
 86%|████████▌ | 1083/1261 [03:31<00:36,  4.89it/s]
road_width_pixel:  838.145980683
 86%|████████▌ | 1084/1261 [03:31<00:38,  4.65it/s]
road_width_pixel:  833.760074421
 86%|████████▌ | 1085/1261 [03:31<00:38,  4.52it/s]
road_width_pixel:  837.637846235
road_width_pixel:  848.461794053
 86%|████████▌ | 1087/1261 [03:32<00:37,  4.66it/s]
road_width_pixel:  855.763195049
 86%|████████▋ | 1088/1261 [03:32<00:37,  4.56it/s]
road_width_pixel:  854.613522849
 86%|████████▋ | 1089/1261 [03:32<00:37,  4.62it/s]
road_width_pixel:  856.915978485
road_width_pixel:  858.467853343
 87%|████████▋ | 1091/1261 [03:32<00:35,  4.85it/s]
road_width_pixel:  859.38350982
 87%|████████▋ | 1092/1261 [03:33<00:35,  4.81it/s]
road_width_pixel:  864.381073519
 87%|████████▋ | 1093/1261 [03:33<00:36,  4.66it/s]
road_width_pixel:  856.851403444
road_width_pixel:  856.509151157
 87%|████████▋ | 1095/1261 [03:33<00:33,  4.95it/s]
road_width_pixel:  826.71321299
 87%|████████▋ | 1096/1261 [03:34<00:33,  4.88it/s]
road_width_pixel:  838.693816803
road_width_pixel:  845.481724061
 87%|████████▋ | 1098/1261 [03:34<00:34,  4.67it/s]
road_width_pixel:  850.646978925
road_width_pixel:  845.967945286
 87%|████████▋ | 1100/1261 [03:34<00:31,  5.15it/s]
road_width_pixel:  839.558881418
road_width_pixel:  844.315287912
 87%|████████▋ | 1102/1261 [03:35<00:31,  4.98it/s]
road_width_pixel:  852.902038227
 87%|████████▋ | 1103/1261 [03:35<00:33,  4.76it/s]
road_width_pixel:  853.091872381
road_width_pixel:  847.530181115
 88%|████████▊ | 1105/1261 [03:35<00:31,  4.91it/s]
road_width_pixel:  845.150075996
 88%|████████▊ | 1106/1261 [03:36<00:32,  4.83it/s]
road_width_pixel:  835.940555961
 88%|████████▊ | 1107/1261 [03:36<00:31,  4.85it/s]
road_width_pixel:  829.541475705
road_width_pixel:  846.07460067
 88%|████████▊ | 1110/1261 [03:36<00:28,  5.29it/s]
road_width_pixel:  848.326069234
road_width_pixel:  858.650147594
 88%|████████▊ | 1112/1261 [03:37<00:28,  5.29it/s]
road_width_pixel:  866.021527768
road_width_pixel:  860.127821306
 88%|████████▊ | 1114/1261 [03:37<00:27,  5.35it/s]
road_width_pixel:  860.841131174
road_width_pixel:  860.528718671
 88%|████████▊ | 1115/1261 [03:37<00:27,  5.22it/s]
road_width_pixel:  860.717385203
road_width_pixel:  850.086343953
 89%|████████▊ | 1117/1261 [03:38<00:27,  5.23it/s]
road_width_pixel:  842.180861405
road_width_pixel:  828.172004282
 89%|████████▊ | 1119/1261 [03:38<00:28,  5.01it/s]
road_width_pixel:  834.02066352
road_width_pixel:  835.063130472
 89%|████████▉ | 1121/1261 [03:38<00:27,  5.15it/s]
road_width_pixel:  838.729373122
road_width_pixel:  837.387882335
 89%|████████▉ | 1123/1261 [03:39<00:27,  5.06it/s]
road_width_pixel:  842.046832802
 89%|████████▉ | 1124/1261 [03:39<00:27,  5.00it/s]
road_width_pixel:  835.552888128
road_width_pixel:  836.525799361
 89%|████████▉ | 1126/1261 [03:39<00:26,  5.18it/s]
road_width_pixel:  838.473352771
 89%|████████▉ | 1127/1261 [03:40<00:28,  4.71it/s]
road_width_pixel:  836.251993329
road_width_pixel:  838.940340697
 90%|████████▉ | 1130/1261 [03:40<00:25,  5.15it/s]
road_width_pixel:  818.389696241
road_width_pixel:  813.186807954
 90%|████████▉ | 1131/1261 [03:40<00:25,  5.06it/s]
road_width_pixel:  832.36877268
road_width_pixel:  847.849845262
 90%|████████▉ | 1134/1261 [03:41<00:23,  5.32it/s]
road_width_pixel:  846.962178896
road_width_pixel:  845.698304154
 90%|█████████ | 1135/1261 [03:41<00:24,  5.16it/s]
road_width_pixel:  849.48430756
road_width_pixel:  852.338045622
 90%|█████████ | 1138/1261 [03:42<00:23,  5.34it/s]
road_width_pixel:  851.928427719
road_width_pixel:  855.227667018
 90%|█████████ | 1139/1261 [03:42<00:23,  5.25it/s]
road_width_pixel:  847.95162516
road_width_pixel:  848.307032285
 90%|█████████ | 1141/1261 [03:42<00:22,  5.38it/s]
road_width_pixel:  842.217118081
road_width_pixel: 
 91%|█████████ | 1142/1261 [03:43<00:23,  5.17it/s]
 856.495148048
 91%|█████████ | 1143/1261 [03:43<00:24,  4.91it/s]
road_width_pixel:  858.508343529
road_width_pixel:  856.742648377
 91%|█████████ | 1146/1261 [03:43<00:21,  5.36it/s]
road_width_pixel:  845.988223479
road_width_pixel:  852.687415679
 91%|█████████ | 1148/1261 [03:44<00:20,  5.41it/s]
road_width_pixel:  852.096428183
road_width_pixel:  845.243921273
 91%|█████████ | 1150/1261 [03:44<00:20,  5.39it/s]
road_width_pixel:  846.655084457
road_width_pixel:  843.233562271
 91%|█████████▏| 1152/1261 [03:44<00:20,  5.32it/s]
road_width_pixel:  839.904573277
road_width_pixel:  835.803239923
 92%|█████████▏| 1154/1261 [03:45<00:20,  5.35it/s]
road_width_pixel:  846.637658866
road_width_pixel:  842.599805667
 92%|█████████▏| 1155/1261 [03:45<00:20,  5.18it/s]
road_width_pixel:  856.405026229
road_width_pixel:  861.542500289
 92%|█████████▏| 1157/1261 [03:45<00:20,  5.10it/s]
road_width_pixel:  864.715521
road_width_pixel:  852.617115538
 92%|█████████▏| 1159/1261 [03:46<00:20,  5.01it/s]
road_width_pixel:  852.365499143
road_width_pixel:  852.082994839
 92%|█████████▏| 1162/1261 [03:46<00:18,  5.34it/s]
road_width_pixel:  843.066646356
road_width_pixel:  844.843723411
 92%|█████████▏| 1163/1261 [03:47<00:18,  5.24it/s]
road_width_pixel:  837.042037646
road_width_pixel:  837.438020151
 92%|█████████▏| 1166/1261 [03:47<00:17,  5.47it/s]
road_width_pixel:  839.578169477
road_width_pixel:  852.149575654
 93%|█████████▎| 1168/1261 [03:48<00:17,  5.33it/s]
road_width_pixel:  859.387232056
road_width_pixel:  869.003710334
 93%|█████████▎| 1170/1261 [03:48<00:16,  5.40it/s]
road_width_pixel:  856.791553188
road_width_pixel:  863.215719494
 93%|█████████▎| 1171/1261 [03:48<00:17,  5.20it/s]
road_width_pixel:  861.040955795
road_width_pixel:  859.247098077
 93%|█████████▎| 1173/1261 [03:48<00:17,  5.15it/s]
road_width_pixel:  852.788507973
road_width_pixel:  838.011292111
 93%|█████████▎| 1175/1261 [03:49<00:17,  4.94it/s]
road_width_pixel:  824.180136566
road_width_pixel:  829.20817966
 93%|█████████▎| 1178/1261 [03:49<00:15,  5.34it/s]
road_width_pixel:  840.735777047
road_width_pixel:  844.859422018
 93%|█████████▎| 1179/1261 [03:50<00:15,  5.15it/s]
road_width_pixel:  841.438557661
 94%|█████████▎| 1180/1261 [03:50<00:16,  4.99it/s]
road_width_pixel:  841.315717225
road_width_pixel:  846.308932843
 94%|█████████▎| 1182/1261 [03:50<00:15,  5.20it/s]
road_width_pixel:  852.179187943
 94%|█████████▍| 1183/1261 [03:50<00:15,  5.06it/s]
road_width_pixel:  854.615747652
road_width_pixel:  844.779097762
 94%|█████████▍| 1185/1261 [03:51<00:14,  5.07it/s]
road_width_pixel:  839.987775118
road_width_pixel:  825.498572496
 94%|█████████▍| 1187/1261 [03:51<00:14,  5.17it/s]
road_width_pixel:  829.700405292
road_width_pixel:  839.440025733
 94%|█████████▍| 1190/1261 [03:52<00:13,  5.34it/s]
road_width_pixel:  838.336801757
road_width_pixel:  838.575831928
 94%|█████████▍| 1191/1261 [03:52<00:13,  5.25it/s]
road_width_pixel:  836.171467871
road_width_pixel:  835.2117979
 95%|█████████▍| 1194/1261 [03:53<00:12,  5.33it/s]
road_width_pixel:  833.904520887
road_width_pixel:  834.164871484
 95%|█████████▍| 1195/1261 [03:53<00:12,  5.26it/s]
road_width_pixel:  834.10134046
road_width_pixel:  829.557962967
 95%|█████████▍| 1197/1261 [03:53<00:12,  5.24it/s]
road_width_pixel:  823.228708663
road_width_pixel:  828.528051767
 95%|█████████▌| 1199/1261 [03:54<00:11,  5.32it/s]
road_width_pixel:  831.826581764
road_width_pixel:  840.891276714
 95%|█████████▌| 1202/1261 [03:54<00:10,  5.52it/s]
road_width_pixel:  850.581150729
road_width_pixel:  859.989528175
 95%|█████████▌| 1203/1261 [03:54<00:10,  5.33it/s]
road_width_pixel:  865.799647727
road_width_pixel:  863.607401241
 96%|█████████▌| 1206/1261 [03:55<00:10,  5.37it/s]
road_width_pixel:  860.33807149
road_width_pixel:  853.511380238
 96%|█████████▌| 1207/1261 [03:55<00:10,  5.02it/s]
road_width_pixel:  840.674002667
road_width_pixel:  821.322660665
 96%|█████████▌| 1209/1261 [03:55<00:09,  5.28it/s]
road_width_pixel:  816.26558039
road_width_pixel:  816.145481731
 96%|█████████▌| 1211/1261 [03:56<00:09,  5.17it/s]
road_width_pixel:  823.812515425
road_width_pixel:  824.902543371
 96%|█████████▋| 1214/1261 [03:56<00:08,  5.39it/s]
road_width_pixel:  830.45149893
road_width_pixel:  841.582733876
 96%|█████████▋| 1215/1261 [03:57<00:08,  5.23it/s]
road_width_pixel:  844.231148455
road_width_pixel:  850.37595103
 97%|█████████▋| 1218/1261 [03:57<00:08,  5.30it/s]
road_width_pixel:  847.019924751
road_width_pixel:  842.159124976
 97%|█████████▋| 1219/1261 [03:57<00:08,  5.19it/s]
road_width_pixel:  840.709223486
road_width_pixel:  818.053284849
 97%|█████████▋| 1222/1261 [03:58<00:07,  5.31it/s]
road_width_pixel:  822.439239456
road_width_pixel:  825.880887999
 97%|█████████▋| 1223/1261 [03:58<00:07,  5.19it/s]
road_width_pixel:  830.700247147
 97%|█████████▋| 1224/1261 [03:58<00:07,  5.02it/s]
road_width_pixel:  830.250324444
road_width_pixel:  839.126991061
 97%|█████████▋| 1226/1261 [03:59<00:06,  5.29it/s]
road_width_pixel:  841.328687244
road_width_pixel:  849.776767469
 97%|█████████▋| 1229/1261 [03:59<00:06,  5.32it/s]
road_width_pixel:  851.541974674
road_width_pixel:  848.959141565
 98%|█████████▊| 1230/1261 [03:59<00:05,  5.30it/s]
road_width_pixel:  846.048849585
 98%|█████████▊| 1231/1261 [04:00<00:05,  5.09it/s]
road_width_pixel:  838.768238727
road_width_pixel:  829.415533443
 98%|█████████▊| 1233/1261 [04:00<00:05,  5.10it/s]
road_width_pixel:  826.09359609
road_width_pixel:  828.795933707
 98%|█████████▊| 1235/1261 [04:00<00:05,  5.07it/s]
road_width_pixel:  821.150802153
road_width_pixel:  835.348866136
 98%|█████████▊| 1238/1261 [04:01<00:04,  5.30it/s]
road_width_pixel:  845.496360628
road_width_pixel:  852.301443056
 98%|█████████▊| 1239/1261 [04:01<00:04,  5.30it/s]
road_width_pixel:  848.683516726
road_width_pixel:  843.336532713
 98%|█████████▊| 1241/1261 [04:02<00:03,  5.31it/s]
road_width_pixel:  838.834251346
road_width_pixel:  825.351180934
 99%|█████████▊| 1244/1261 [04:02<00:03,  5.21it/s]
road_width_pixel:  834.765179987
road_width_pixel:  843.982828945
 99%|█████████▉| 1246/1261 [04:03<00:02,  5.33it/s]
road_width_pixel:  849.367544984
road_width_pixel:  847.167464013
 99%|█████████▉| 1247/1261 [04:03<00:02,  5.17it/s]
road_width_pixel:  848.722022384
road_width_pixel:  850.96374988
 99%|█████████▉| 1249/1261 [04:03<00:02,  5.15it/s]
road_width_pixel:  852.143142624
road_width_pixel:  847.447319737
 99%|█████████▉| 1251/1261 [04:04<00:02,  4.83it/s]
road_width_pixel:  849.522609965
road_width_pixel:  849.330023454
 99%|█████████▉| 1254/1261 [04:04<00:01,  5.27it/s]
road_width_pixel:  854.699548041
road_width_pixel:  863.992583202
100%|█████████▉| 1255/1261 [04:04<00:01,  5.13it/s]
road_width_pixel:  870.021199587
road_width_pixel:  871.226409739
100%|█████████▉| 1257/1261 [04:05<00:00,  5.11it/s]
road_width_pixel:  863.429461017
road_width_pixel:  869.923770722
100%|█████████▉| 1259/1261 [04:05<00:00,  5.13it/s]
road_width_pixel:  874.09260896
100%|█████████▉| 1260/1261 [04:05<00:00,  4.91it/s]
road_width_pixel:  874.77243621

[MoviePy] Done.
[MoviePy] >>>> Video ready: project_videoline.mp4 

CPU times: user 19min 20s, sys: 4.49 s, total: 19min 24s
Wall time: 4min 6s